Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
👍3🔥1
Как получить размер (разрешение) экрана
Узнать ориентацию экрана в 1С 8.3:
👉@DevLab1C
Узнать программно размер экрана в 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
Функция ОтключениеОбработчика() Экспорт
// Для регламентных заданий:
// бывает, что надо даже в копии запускать регламентные,
// но если не надо, что бы они отработали, то можно отключать так:
//Условие...
Если БлокировкаРаботыСВнешнимиРесурсами.РаботаСВнешнимиРесурсамиЗаблокирована() = Истина Тогда
//Заблокируем выполнение обработки
//Возврат;
КонецЕсли;
КонецФункции
Функция РаботаСВнешнимиРесурсамиЗаблокирована() Экспорт
Возврат ПараметрыСеанса.РаботаСВнешнимиРесурсамиЗаблокирована;
КонецФункции
👉@DevLab1C
🔥4👍2
Media is too big
VIEW IN TELEGRAM
Делаем табло заказов в обозревателе из 1Ски с нуля за полчаса.Без бутстрапов, регистрации и СМС.
В данной публикации я хочу показать как можно сделать сопряжение 1С - обозреватель своими 1Сными силами с базовыми навыками верстки с нуля за полчаса и бесплатно. Для скачки исходников ищите статью на инфостарте, ютуб убирает гиперссылки.
источник
👉@DevLab1C
В данной публикации я хочу показать как можно сделать сопряжение 1С - обозреватель своими 1Сными силами с базовыми навыками верстки с нуля за полчаса и бесплатно. Для скачки исходников ищите статью на инфостарте, ютуб убирает гиперссылки.
источник
👉@DevLab1C
👍4
Как создать Zip архив с файлами в 1С 8.3
👉@DevLab1C
&НаКлиенте
Процедура Создаем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
👉@DevLab1C
&НаКлиенте
Процедура Распаковываем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
👉@DevLab1C
//Подходит для файлов более 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
👉@DevLab1C
//Подходит для файлов более 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
👉@DevLab1C
//Подходит для файлов менее 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
👉@DevLab1C
&НаКлиенте
Процедура ЗаписатьДанныеВФормате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
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
👉@DevLab1C
&НаСервере
Процедура ЧтениеЗаписиЗапросом()
// Если не требуется изменять найденные записи.
СсылкаДок = Документы.УстановкаЦен.НайтиПоНомеру("ПТО-00000001", '20201231');
// Чтение запросом записей регистра сведений "ЦеныРеализации" текущего документа
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныРеализации.Период,
| ЦеныРеализации.Регистратор,
| ЦеныРеализации.НомерСтроки,
| ЦеныРеализации.Активность,
| ЦеныРеализации.Номенклатура,
| ЦеныРеализации.Контрагент,
| ЦеныРеализации.Организация,
| ЦеныРеализации.Цена
|ИЗ
| РегистрСведений.ЦеныРеализации КАК ЦеныРеализации
|ГДЕ
| ЦеныРеализации.Регистратор = &Регистратор
|УПОРЯДОЧИТЬ ПО
| ЦеныРеализации.НомерСтроки";
Запрос.УстановитьПараметр("Регистратор",СсылкаДок);
РезультатЗапроса = Запрос.Выполнить();
Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
Сообщить("по документу " + Записи.Регистратор + " по " +Записи.Организация + ", "
+ Записи.Контрагент + " " + Записи.Номенклатура +" = "+ Записи.Цена + " руб.");
КонецЦикла;
КонецПроцедуры
👉@DevLab1C
👍2🔥1🤔1
Получение наиболее ранних записей регистра сведений через срез первых на дату в 1С 8.3
👉@DevLab1C
&НаСервере
Процедура ПолучениеНаиболееРаннихЗаписей()
// Параметры виртуальной таблицы СрезПервых:
// 1. Период (включительно)
// 2. Условие (например, Организация = &ВыбОрганизация)
// Получение цен на Молоко 3,2% для каждого контрагента на начало 2 квартала 2020 года (включительно)
// по организации ОАО "Гипермаркет АЗИЯ".
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныРеализацииСрезПервых.Период,
| ЦеныРеализацииСрезПервых.Активность,
| ЦеныРеализацииСрезПервых.Номенклатура,
| ЦеныРеализацииСрезПервых.Контрагент,
| ЦеныРеализацииСрезПервых.Организация,
| ЦеныРеализацииСрезПервых.Цена
|ИЗ
| РегистрСведений.ЦеныРеализации.СрезПервых(
| ДАТАВРЕМЯ(2020, 04, 01, 00, 00, 00),
| Активность = Истина И
| Организация = &ВыбОрганизация И
| Номенклатура = &ВыбНоменклатура) КАК ЦеныРеализацииСрезПервых
|УПОРЯДОЧИТЬ ПО
| ЦеныРеализацииСрезПервых.Контрагент";
Запрос.УстановитьПараметр("ВыбОрганизация",Справочники.Организации.НайтиПоНаименованию("ОАО ""Гипермаркет АЗИЯ"""));
Запрос.УстановитьПараметр("ВыбНоменклатура",Справочники.Номенклатура.НайтиПоНаименованию("Молоко 3,2%"));
РезультатЗапроса = Запрос.Выполнить();
Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
Сообщить("за " + Записи.Период + " на " +Записи.Номенклатура + " " + Записи.Контрагент + " = " +Записи.Цена + " руб.");
КонецЦикла;
КонецПроцедуры
👉@DevLab1C
👍2👎2🔥2
Получение наиболее поздних записей регистра сведений через срез последних на дату в 1С 8.3
👉@DevLab1C
&НаСервере
Процедура ПолучениеНаиболееПозднихЗаписей()
// Параметры виртуальной таблицы СрезПоследних:
// 1. Период (включительно)
// 2. Условие (например, Организация = &ВыбОрганизация)
// Получение цен на Молоко 3,2% для каждого контрагента на конец 2 квартала 2020 года (включительно)
// по организации ОАО "Гипермаркет АЗИЯ".
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныРеализацииСрезПоследних.Период,
| ЦеныРеализацииСрезПоследних.Активность,
| ЦеныРеализацииСрезПоследних.Номенклатура,
| ЦеныРеализацииСрезПоследних.Контрагент,
| ЦеныРеализацииСрезПоследних.Организация,
| ЦеныРеализацииСрезПоследних.Цена
|ИЗ
| РегистрСведений.ЦеныРеализации.СрезПоследних(
| ДАТАВРЕМЯ(2020, 06, 30, 23, 59, 59),
| Активность = Истина И
| Организация = &ВыбОрганизация И
| Номенклатура = &ВыбНоменклатура
| ) КАК ЦеныРеализацииСрезПоследних
|УПОРЯДОЧИТЬ ПО
| ЦеныРеализацииСрезПоследних.Контрагент";
Запрос.УстановитьПараметр("ВыбОрганизация",Справочники.Организации.НайтиПоНаименованию("ОАО ""Гипермаркет АЗИЯ"""));
Запрос.УстановитьПараметр("ВыбНоменклатура",Справочники.Номенклатура.НайтиПоНаименованию("Молоко 3,2%"));
РезультатЗапроса = Запрос.Выполнить();
Записи = РезультатЗапроса.Выбрать();
Пока Записи.Следующий() Цикл
Сообщить("за " + Записи.Период + " на " +Записи.Номенклатура + " " + Записи.Контрагент + " = " +Записи.Цена + " руб.");
КонецЦикла;
КонецПроцедуры
👉@DevLab1C
🔥3👍1🤩1
Создание записи в регистре сведений без привязки к документу в 1С 8.3
👉@DevLab1C
&НаСервере
Процедура СозданиеЗаписиБезПривязкиКДокументу()
// Создание записи в регистре сведений без привязки к документу можно только для регистров,
// в свойствах которых установлен режим записи "Независимый".
// Создание записи - для единичных записей лучше использовать "Менеджер Записей"
НоваяЗапись = РегистрыСведений.КурсВалют.СоздатьМенеджерЗаписи();
НоваяЗапись.Период = '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