1С:Предприятие 8
784 subscribers
46 photos
159 videos
51 links
🔥 Разработка в 1С — просто и понятно! 🔥

Полезные фишки и лайфхаки для разработчиков
Объяснение сложных тем простыми словами
Готовые решения, сниппеты и примеры кода
Разбор ошибок и способов их устранения
Новости и тренды в мире 1С
Download Telegram
Объекты 1С. Часть 2

№11. Подчинённые справочники
№12. Иерархические справочники
№13. Обработки
№14. Выборка
№15. Удаление и установка пометки удаления
№16. Журнал документов
№17. План видов характеристик
№18. Отчёты
№19. Внешние отчеты и обработки
№20. Регистры накопления

источник

👉@DevLab1C
👍3🔥1
Как получить размер (разрешение) экрана


Узнать программно размер экрана в 1С 8.3 (вариант №1):
&НаКлиенте
Функция ПолучитьРазмерЭкранаОпционально()

ИнфоЭкрана = ПолучитьИнформациюЭкрановКлиента(); // с 8.3.2; результат - фикс.массив объектов

ДПИ = ИнфоЭкрана[0].DPI;
ВысотаЭкрана = Формат(ИнфоЭкрана[0].Высота, "ЧГ=");
ШиринаЭкрана = Формат(ИнфоЭкрана[0].Ширина, "ЧГ=");
//Сообщить(СтрШаблон("Разрешение: %1x%2", ШиринаЭкрана, ВысотаЭкрана));

РазрешениеЭкрана = Новый Структура("ШиринаЭкрана,ВысотаЭкрана,ДПИ",
ИнфоЭкрана[0].Ширина,ИнфоЭкрана[0].Высота,ИнфоЭкрана[0].DPI);

Возврат РазрешениеЭкрана;

КонецФункции


Узнать программно размер экрана в 1С 8.3 (вариант №2):
&НаКлиенте
Функция ПолучитьРазмерЭкранаЧерезКом()

БраузерИЕ = Новый COMОбъект("InternetExplorer.Application");
БраузерИЕ.FullScreen = -1;

ВысотаЭкрана = Формат(БраузерИЕ.Height, "ЧГ=");
ШиринаЭкрана = Формат(БраузерИЕ.Width, "ЧГ=");
//Сообщить(СтрШаблон("Разрешение: %1x%2", ШиринаЭкрана, ВысотаЭкрана));

РазрешениеЭкрана = Новый Структура("ШиринаЭкрана, ВысотаЭкрана",
БраузерИЕ.Width, БраузерИЕ.Height);

Возврат РазрешениеЭкрана;

КонецФункции



Узнать ориентацию экрана в 1С 8.3:


&НаКлиенте
Функция ПолучитьОриентациюЭкрана(ШиринаЭкрана, ВысотаЭкрана)

ОриентацияЭкрана="";
Если ВысотаЭкрана > ШиринаЭкрана Тогда
ОриентацияЭкрана="Портрет";
Иначе
ОриентацияЭкрана="Ландшафт";
КонецЕсли;

//Если ОриентацияЭкрана="Портрет" Тогда
// АвтоПоворотЭкрана(ШиринаЭкрана, ВысотаЭкрана);
//КонецЕсли;

Возврат ОриентацияЭкрана;

КонецФункции


👉@DevLab1C
👍2🔥2
Как отключить предупреждение: Это копия информационной базы в 1С 8.3


Функция ОтключениеОбработчика() Экспорт

// Для регламентных заданий:
// бывает, что надо даже в копии запускать регламентные,
// но если не надо, что бы они отработали, то можно отключать так:

//Условие...
Если БлокировкаРаботыСВнешнимиРесурсами.РаботаСВнешнимиРесурсамиЗаблокирована() = Истина Тогда
//Заблокируем выполнение обработки
//Возврат;
КонецЕсли;

КонецФункции

Функция РаботаСВнешнимиРесурсамиЗаблокирована() Экспорт

Возврат ПараметрыСеанса.РаботаСВнешнимиРесурсамиЗаблокирована;

КонецФункции


👉@DevLab1C
🔥4👍2
Media is too big
VIEW IN TELEGRAM
Делаем табло заказов в обозревателе из 1Ски с нуля за полчаса.Без бутстрапов, регистрации и СМС.

В данной публикации я хочу показать как можно сделать сопряжение 1С - обозреватель своими 1Сными силами с базовыми навыками верстки с нуля за полчаса и бесплатно. Для скачки исходников ищите статью на инфостарте, ютуб убирает гиперссылки.

источник

👉@DevLab1C
👍4
Как создать Zip архив с файлами в 1С 8.3


&НаКлиенте
Процедура СоздаемZipАрхивСФайлами()

// Создаем zip-архив
ИмяАрхФайла="D:\AvtoArhiv\Doc31032020.zip";//Путь к архиву и имя
// Особенность: Архивировать средствами 1С можно даже запущенную информационную базу 1С
ПарольАрхФайла=""; // если нужно - можно задать пароль на архив
КоммАрхФайла="Архив документов создан 31/03/2020 из 1С 8.3"; // комментарий к архиву

ФайлАрхива = Новый ЗаписьZipФайла(ИмяАрхФайла, ПарольАрхФайла, КоммАрхФайла,
МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Оптимальный, МетодШифрованияZIP.Zip20);

// Добавляем файл в zip-архив
ФайлАрхива.Добавить("D:\MyDocuments\ПланНа2020.docx"); // путь к файлу который добавляем в архив

// Или добавляем несколько файлов в zip-архив по маске
ФайлАрхива.Добавить("D:\MyDocuments\*.xlsx"); // указываем маску к файлам

// Или если нужно в архив добавить файлы не только из корневой папки ("D:\MyDocuments\"),
// но и из подпапок ("D:\MyDocuments\Balans2019\","D:\MyDocuments\Balans2020\",...)
// где есть файлы c расширением *.xlsx. Нужно использовать параметры (режимы):
ФайлАрхива.Добавить("D:\MyDocuments\*.xlsx",
РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);

// Записываем созданный архив на диск компьютера
ФайлАрхива.Записать();

КонецПроцедуры


👉@DevLab1C
👍2🔥2
Как распаковать Zip архив в 1С 8.3


&НаКлиенте
Процедура РаспаковываемZipАрхив()

// Распаковываем Doc31032020.zip в папку "D:\AvtoArhiv\"
ФайлАрхива = Новый ЧтениеZipФайла("D:\AvtoArhiv\Doc31032020.zip",""); // путь, пароль к архиву

// Сообщим комментарий к архиву
Сообщить(ФайлАрхива.Комментарий);

РежимВосстПутейФайлов=РежимВосстановленияПутейФайловZIP.Восстанавливать;
// Распаковываем все файлы в D:\MyDocuments\Out
ФайлАрхива.ИзвлечьВсе("D:\MyDocuments\Out", РежимВосстПутейФайлов); // (путь, восстанавливать каталоги)

// Или распаковываем файлы по одиночке.
Для Каждого Элемент Из ФайлАрхива.Элементы Цикл

Сообщить("... разархивирую..."+Элемент.ПолноеИмя);
//(Элемент, Путь, ВосстанавливатьКаталоги, Пароль)
ФайлАрхива.Извлечь(Элемент,"D:\MyDocuments\Out", РежимВосстПутейФайлов,"");

КонецЦикла;

КонецПроцедуры


👉@DevLab1C
👍2🔥1
Чтение файла в формате XML по порядку (способ №1) в 1С 8.3


//Подходит для файлов более 100Mb
&НаСервере
Процедура ПрочитатьФайлXMLПоПорядкуСпособ1(ПутьКФайлу)

XML = Новый ЧтениеXML;
XML.ОткрытьФайл(ПутьКФайлу);

Пока XML.Прочитать() Цикл

Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Ресторан" Тогда

Название = XML.ЗначениеАтрибута("Название");
Если Название <> Неопределено Тогда
Сообщить("Название ресторана:" + Название);
КонецЕсли;

Категория = XML.ЗначениеАтрибута("Категория");
Если Категория <> Неопределено Тогда
Сообщить("...наценочная категория ресторана: " + Категория);
КонецЕсли;

Счет = XML.ЗначениеАтрибута("Счет");
Если Счет <> Неопределено Тогда
Сообщить("...средний счет ресторана: " + Счет);
КонецЕсли;

Кухня = XML.ЗначениеАтрибута("Кухня");
Если Кухня <> Неопределено Тогда
Сообщить("...кухня ресторана: " + Кухня);
КонецЕсли;

Пока XML.Прочитать() Цикл// <Ресторан>

Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Меню" Тогда
Сообщить("Меню:");

Пока XML.Прочитать() Цикл// <Меню>
Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Блюдо" Тогда
Название = XML.ЗначениеАтрибута("Название");
Если Название <> Неопределено Тогда
Сообщить("...название блюда:" + Название);
КонецЕсли;
ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента И XML.Имя = "Меню" Тогда
Прервать;
КонецЕсли;
КонецЦикла;//

ИначеЕсли XML.ТипУзла = ТипУзлаXML.НачалоЭлемента И XML.Имя = "Описание" Тогда

XML.Прочитать();
Если XML.ТипУзла = ТипУзлаXML.Текст Тогда
Сообщить("Описание:" + XML.Значение);
КонецЕсли;

ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента И XML.Имя = "Ресторан" Тогда

Прервать;

КонецЕсли;

КонецЦикла;//

КонецЕсли;

КонецЦикла;

XML.Закрыть();

КонецПроцедуры



👉@DevLab1C
🔥3👍2
Чтение файла в формате XML по порядку (способ №2) в 1С 8.3


//Подходит для файлов более 100Mb
&НаСервере
Процедура ПрочитатьФайлXMLПоПорядкуСпособ2(ПутьКФайлу)

XML = Новый ЧтениеXML;
XML.ОткрытьФайл(ПутьКФайлу);

СписокИмен = Новый СписокЗначений;

Пока XML.Прочитать() Цикл
Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

СписокИмен.Добавить(XML.Имя);
ПутьXML = СобратьПуть(СписокИмен);

Если ПутьXML = "/Рестораны/Ресторан" Тогда
Название = XML.ЗначениеАтрибута("Название");
Если Название <> Неопределено Тогда
Сообщить("Название ресторана: " + Название);//"Китайская грамота"
КонецЕсли;

Категория = XML.ЗначениеАтрибута("Категория");
Если Категория <> Неопределено Тогда
Сообщить("...наценочная категория ресторана: " + Категория);// Высшая
КонецЕсли;

Счет = XML.ЗначениеАтрибута("Счет");
Если Счет <> Неопределено Тогда
Сообщить("...средний счет ресторана: " + Счет);// 3500
КонецЕсли;

Кухня = XML.ЗначениеАтрибута("Кухня");
Если Кухня <> Неопределено Тогда
Сообщить("...кухня ресторана: " + Кухня);// Азиатская
КонецЕсли;

ИначеЕсли ПутьXML = "/Рестораны/Ресторан/Меню" Тогда

Сообщить("Меню:");

ИначеЕсли ПутьXML = "/Рестораны/Ресторан/Меню/Блюдо" Тогда

Название = XML.ЗначениеАтрибута("Название");
Если Название <> Неопределено Тогда
Сообщить("...название блюда: " + Название);
КонецЕсли;

ИначеЕсли ПутьXML = "/Рестораны/Ресторан/Описание" Тогда

XML.Прочитать();
Если XML.ТипУзла = ТипУзлаXML.Текст Тогда
Сообщить("Описание: " + XML.Значение);
КонецЕсли;

КонецЕсли;

ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда

СписокИмен.Удалить(СписокИмен.Количество() - 1);

КонецЕсли;

КонецЦикла;

XML.Закрыть();

КонецПроцедуры

&НаСервере
Функция СобратьПуть(СписокИмен)

НашПуть = "";

Для Каждого Имя Из СписокИмен Цикл
НашПуть = НашПуть + "/" + Имя;
КонецЦикла;

Возврат НашПуть;

КонецФункции


👉@DevLab1C
🔥3👍2
Чтение файла в формате XML через document object model (DOM) (способ №3) в 1С 8.3

//Подходит для файлов менее 100Mb, для больших Не подходит
&НаСервере
Процедура ПрочитатьФайлXMLЧерезDOMСпособ3(ПутьКФайлу)

//Поочередная обработка всех узлов документа, представленных в XML:
//1.Объявление механизмов, с помощью которых происходит чтение XML файла; Цикл для обхода узлов;
//2.Считывание данных и атрибутов в узле;
//3.Вывод информации. Если есть необходимость, на этом этапе может происходить запись в переменные или сразу в нужные таблицы;
//4.Завершение работы механизма

ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);

Построитель_DOM = Новый ПостроительDOM;
ДокументXML = Построитель_DOM.Прочитать(ЧтениеXML);

Для Каждого ТекУзел Из ДокументXML.ЭлементДокумента.ДочерниеУзлы Цикл

Если ТекУзел.ИмяУзла = "Ресторан" Тогда

Ресторан = ТекУзел;

Название = Ресторан.Атрибуты.ПолучитьИменованныйЭлемент("Название");
Если Название <> Неопределено Тогда
Сообщить("Название ресторана:" + Название.Значение);//"Китайская грамота"
КонецЕсли;

Категория = Ресторан.Атрибуты.ПолучитьИменованныйЭлемент("Категория");
Если Категория <> Неопределено Тогда
Сообщить("...наценочная категория ресторана: " + Категория.Значение);// Высшая
КонецЕсли;

СрСчет = Ресторан.Атрибуты.ПолучитьИменованныйЭлемент("Счет");
Если СрСчет <> Неопределено Тогда
Сообщить("...средний счет ресторана: " + СрСчет.Значение);// 3500
КонецЕсли;

Кухня = Ресторан.Атрибуты.ПолучитьИменованныйЭлемент("Кухня");
Если Кухня <> Неопределено Тогда
Сообщить("...кухня ресторана: " + Кухня.Значение);// Азиатская
КонецЕсли;

Для Каждого ТекУзел1 Из Ресторан.ДочерниеУзлы Цикл

Если ТекУзел1.ИмяУзла = "Меню" Тогда

Меню = ТекУзел1;
Сообщить("Меню:");

Для Каждого ТекУзел2 Из Меню.ДочерниеУзлы Цикл

Если ТекУзел2.ИмяУзла = "блюдо" Тогда
Блюдо = ТекУзел2;

Название = Блюдо.Атрибуты.ПолучитьИменованныйЭлемент("Название");
Если Название <> Неопределено Тогда
Сообщить("...название блюда:" + Название.Значение);
КонецЕсли;

КонецЕсли;

КонецЦикла;

ИначеЕсли ТекУзел1.ИмяУзла = "Описание" Тогда

Сообщить("Описание :" + ТекУзел1.ТекстовоеСодержимое);

КонецЕсли;

КонецЦикла;

КонецЕсли;

КонецЦикла;

ЧтениеXML.Закрыть();

КонецПроцедуры


👉@DevLab1C
👍3🔥2
Запись данных в файл формата XML в 1С 8.3


&НаКлиенте
Процедура ЗаписатьДанныеВФорматеXML(ПутьКФайлу)

Рестораны = СоздатьДанныеДляЗаписиВXML();
ПараметрыЗаписи = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Ложь);//необязательно их прописовать

XML = Новый ЗаписьXML;
XML.ОткрытьФайл(ПутьКФайлу,ПараметрыЗаписи);
XML.ЗаписатьОбъявлениеXML();
XML.ЗаписатьНачалоЭлемента("Рестораны");

Для Каждого Ресторан Из Рестораны Цикл

XML.ЗаписатьНачалоЭлемента("Ресторан");
XML.ЗаписатьАтрибут("Название", Ресторан.Значение.Название);
XML.ЗаписатьАтрибут("Категория", Ресторан.Значение.Категория);
XML.ЗаписатьАтрибут("Счет", Ресторан.Значение.Счет);
XML.ЗаписатьАтрибут("Кухня", Ресторан.Значение.Кухня);

XML.ЗаписатьНачалоЭлемента("Меню");
Для Каждого БлюдоИзМеню Из Ресторан.Значение.Меню Цикл

XML.ЗаписатьНачалоЭлемента("Блюдо");
XML.ЗаписатьАтрибут("Название", БлюдоИзМеню.Значение.Название);
XML.ЗаписатьКонецЭлемента(); // Блюдо

КонецЦикла;

XML.ЗаписатьКонецЭлемента(); // Меню

XML.ЗаписатьНачалоЭлемента("Описание");
XML.ЗаписатьТекст(Ресторан.Значение.Описание);
XML.ЗаписатьКонецЭлемента(); // Описание

XML.ЗаписатьКонецЭлемента(); // Ресторан

КонецЦикла;

XML.ЗаписатьКонецЭлемента(); // Рестораны

XML.Закрыть();

КонецПроцедуры


&НаКлиенте
Функция СоздатьДанныеДляЗаписиВXML()

Рестораны = Новый СписокЗначений;

Китайский_ресторан = Новый Структура("Название, Категория, Счет, Кухня, Меню, Описание");
Китайский_ресторан.Название = "Китайская грамота";
Китайский_ресторан.Категория = "Высшая";//наценочная категория
Китайский_ресторан.Счет = "3500";//средний счет
Китайский_ресторан.Кухня = "Азиатская";
Китайский_ресторан.Меню = Новый СписокЗначений;
Китайский_ресторан.Меню.Добавить(Новый Структура("Название", "Суши из форели"));
Китайский_ресторан.Меню.Добавить(Новый Структура("Название", "Лапша фирменная"));
Китайский_ресторан.Меню.Добавить(Новый Структура("Название", "Суп из малюсков"));
Китайский_ресторан.Описание = "Ресторан азиатской кухни Высшей наценочной категории";
Рестораны.Добавить(Китайский_ресторан);

Европейский_ресторан = Новый Структура("Название, Категория, Счет, Кухня, Меню, Описание");
Европейский_ресторан.Название = "Итальянский Экспресс";
Европейский_ресторан.Категория = "Люкс";//наценочная категория
Европейский_ресторан.Счет = "5000";//средний счет
Европейский_ресторан.Кухня = "Европейская";
Европейский_ресторан.Меню = Новый СписокЗначений;
Европейский_ресторан.Меню.Добавить(Новый Структура("Название", "Мясная нарезка из мраморной говядины"));
Европейский_ресторан.Меню.Добавить(Новый Структура("Название", "Салат де-люкс Комплимент"));
Европейский_ресторан.Меню.Добавить(Новый Структура("Название", "Пицца от шеф повара"));
Европейский_ресторан.Описание = "Ресторан европейской кухни категории Люкс";
Рестораны.Добавить(Европейский_ресторан);

Возврат Рестораны;

КонецФункции


👉@DevLab1C
👍2🔥2
Media is too big
VIEW IN TELEGRAM
Типовые ошибки в условиях 1С запросов

00:00 - Стандарт "Эффективные условия запросов" от фирмы 1С
00:19 - ВЫБРАТЬ в запросах 1С
01:20 - Отрицание в условиях 1С запросов
02:17 - Не используй НЕ ЕСТЬ NULL
04:08 - Почему ИЛИ / В() - это плохо
06:41 - Нельзя использовать ТИПЗНАЧЕНИЯ() в 1С запросах
07:21 - Соединения
08:29 - Пример оптимизации условий в 1С запросе

источник

👉@DevLab1C
🔥3👍2
Чтение записи документа в регистре сведений запросом в 1С 8.3


&НаСервере
Процедура ЧтениеЗаписиЗапросом()

// Если не требуется изменять найденные записи.
СсылкаДок = Документы.УстановкаЦен.НайтиПоНомеру("ПТО-00000001", '20201231');

// Чтение запросом записей регистра сведений "ЦеныРеализации" текущего документа
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныРеализации.Период,
| ЦеныРеализации.Регистратор,
| ЦеныРеализации.НомерСтроки,
| ЦеныРеализации.Активность,
| ЦеныРеализации.Номенклатура,
| ЦеныРеализации.Контрагент,
| ЦеныРеализации.Организация,
| ЦеныРеализации.Цена
|ИЗ
| РегистрСведений.ЦеныРеализации КАК ЦеныРеализации
|ГДЕ
| ЦеныРеализации.Регистратор = &Регистратор
|УПОРЯДОЧИТЬ ПО
| ЦеныРеализации.НомерСтроки";

Запрос.УстановитьПараметр("Регистратор",СсылкаДок);
РезультатЗапроса = Запрос.Выполнить();

Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл

Сообщить("по документу " + Записи.Регистратор + " по " +Записи.Организация + ", "
+ Записи.Контрагент + " " + Записи.Номенклатура +" = "+ Записи.Цена + " руб.");

КонецЦикла;

КонецПроцедуры


👉@DevLab1C
👍2🔥1🤔1
Получение наиболее ранних записей регистра сведений через срез первых на дату в 1С 8.3


&НаСервере
Процедура ПолучениеНаиболееРаннихЗаписей()

// Параметры виртуальной таблицы СрезПервых:
// 1. Период (включительно)
// 2. Условие (например, Организация = &ВыбОрганизация)

// Получение цен на Молоко 3,2% для каждого контрагента на начало 2 квартала 2020 года (включительно)
// по организации ОАО "Гипермаркет АЗИЯ".
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныРеализацииСрезПервых.Период,
| ЦеныРеализацииСрезПервых.Активность,
| ЦеныРеализацииСрезПервых.Номенклатура,
| ЦеныРеализацииСрезПервых.Контрагент,
| ЦеныРеализацииСрезПервых.Организация,
| ЦеныРеализацииСрезПервых.Цена
|ИЗ
| РегистрСведений.ЦеныРеализации.СрезПервых(
| ДАТАВРЕМЯ(2020, 04, 01, 00, 00, 00),
| Активность = Истина И
| Организация = &ВыбОрганизация И
| Номенклатура = &ВыбНоменклатура) КАК ЦеныРеализацииСрезПервых
|УПОРЯДОЧИТЬ ПО
| ЦеныРеализацииСрезПервых.Контрагент";

Запрос.УстановитьПараметр("ВыбОрганизация",Справочники.Организации.НайтиПоНаименованию("ОАО ""Гипермаркет АЗИЯ"""));
Запрос.УстановитьПараметр("ВыбНоменклатура",Справочники.Номенклатура.НайтиПоНаименованию("Молоко 3,2%"));
РезультатЗапроса = Запрос.Выполнить();

Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл

Сообщить("за " + Записи.Период + " на " +Записи.Номенклатура + " " + Записи.Контрагент + " = " +Записи.Цена + " руб.");

КонецЦикла;

КонецПроцедуры


👉@DevLab1C
👍2👎2🔥2
Получение наиболее поздних записей регистра сведений через срез последних на дату в 1С 8.3


&НаСервере
Процедура ПолучениеНаиболееПозднихЗаписей()

// Параметры виртуальной таблицы СрезПоследних:
// 1. Период (включительно)
// 2. Условие (например, Организация = &ВыбОрганизация)

// Получение цен на Молоко 3,2% для каждого контрагента на конец 2 квартала 2020 года (включительно)
// по организации ОАО "Гипермаркет АЗИЯ".
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныРеализацииСрезПоследних.Период,
| ЦеныРеализацииСрезПоследних.Активность,
| ЦеныРеализацииСрезПоследних.Номенклатура,
| ЦеныРеализацииСрезПоследних.Контрагент,
| ЦеныРеализацииСрезПоследних.Организация,
| ЦеныРеализацииСрезПоследних.Цена
|ИЗ
| РегистрСведений.ЦеныРеализации.СрезПоследних(
| ДАТАВРЕМЯ(2020, 06, 30, 23, 59, 59),
| Активность = Истина И
| Организация = &ВыбОрганизация И
| Номенклатура = &ВыбНоменклатура
| ) КАК ЦеныРеализацииСрезПоследних
|УПОРЯДОЧИТЬ ПО
| ЦеныРеализацииСрезПоследних.Контрагент";

Запрос.УстановитьПараметр("ВыбОрганизация",Справочники.Организации.НайтиПоНаименованию("ОАО ""Гипермаркет АЗИЯ"""));
Запрос.УстановитьПараметр("ВыбНоменклатура",Справочники.Номенклатура.НайтиПоНаименованию("Молоко 3,2%"));
РезультатЗапроса = Запрос.Выполнить();

Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл

Сообщить("за " + Записи.Период + " на " +Записи.Номенклатура + " " + Записи.Контрагент + " = " +Записи.Цена + " руб.");

КонецЦикла;

КонецПроцедуры


👉@DevLab1C
🔥3👍1🤩1
Создание записи в регистре сведений без привязки к документу в 1С 8.3


&НаСервере
Процедура СозданиеЗаписиБезПривязкиКДокументу()

// Создание записи в регистре сведений без привязки к документу можно только для регистров,
// в свойствах которых установлен режим записи "Независимый".

// Создание записи - для единичных записей лучше использовать "Менеджер Записей"
НоваяЗапись = РегистрыСведений.КурсВалют.СоздатьМенеджерЗаписи();
НоваяЗапись.Период = '20200401';
НоваяЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию("Евро");
НоваяЗапись.Курс = 2.8010;
НоваяЗапись.Записать(Истина); // Замещение - если уже есть запись с такими же измерениями и таким же периодом


// Поиск, изменение и удаление созданной запись на дату
Выборка = РегистрыСведений.КурсВалют.Выбрать('20200401', '20200401');
Если Выборка.Следующий() Тогда

Запись = Выборка.ПолучитьМенеджерЗаписи();
Запись.Прочитать();
Запись.Курс = 2.8020;// Изменение курса Евро
Запись.Записать(Истина);// Запись курса Евро
Запись.Удалить();// Удаление курса Евро

КонецЕсли;

// Для группового изменения записей лучше использовать "Набор Записей"
Евро = Справочники.Валюты.НайтиПоНаименованию("Евро");

НаборЗаписей = РегистрыСведений.КурсВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Валюта.Установить(Евро);

Запись_1 = НаборЗаписей.Добавить();
Запись_1.Период = '20200401'; // 01 апреля 2020 г.
Запись_1.Валюта = Евро;
Запись_1.Курс = 2.8446;

Запись_2 = НаборЗаписей.Добавить();
Запись_2.Период = '20200402'; // 02 апреля 2020 г.
Запись_2.Валюта = Евро;
Запись_2.Курс = 2.8478;

Запись_3 = НаборЗаписей.Добавить();
Запись_3.Период = '20200403'; // 03 апреля 2020 г.
Запись_3.Валюта = Евро;
Запись_3.Курс = 2.8320;

Запись_4 = НаборЗаписей.Добавить();
Запись_4.Период = '20200404'; // 04 апреля 2020 г.
Запись_4.Валюта = Евро;
Запись_4.Курс = 2.7943;

Запись_5 = НаборЗаписей.Добавить();
Запись_5.Период = '20200405'; // 05 апреля 2020 г.
Запись_5.Валюта = Евро;
Запись_5.Курс = 2.7797;


// Запись сразу всего набора
НаборЗаписей.Записать(Истина); // Замещение - если уже есть запись с такими же измерениями и таким же периодом

КонецПроцедуры


👉@DevLab1C
👍2🔥1🤣1
Серверы и 1С

Ускоряем 1С с помощью режима Shared memory
Как ускорить 1С в 2 раза за 5 минут? Turbo Boost в действии!
Как замерить производительность 1С сервера? Тест Гилёва.
Как выбрать сервер для 1С? Разбираем основные параметры серверов под 1С

источник

👉@DevLab1C
👍2🔥2