Перебор документов, обработка и запись В данном примере показано как в 7-ке выбрать документы поступления товаров за определенный период и обработать их, установив дату и номер счета-фактуры.
Код 1C v 7.x Процедура Сформировать()
ДокПрием = СоздатьОбъект( "Документ.ПоступлениеТоваров" ) ;
ДокПрием. ВыбратьДокументы( НачДата, КонДата) ;
Пока ДокПрием. ПолучитьДокумент( ) = 1 Цикл
текдлина = СтрДлина( СокрЛП( ДокПрием. НомерСчетаФактуры) ) ;
если текдлина> 1 Тогда
Сообщить( "Уже заполнено - " + строка( текдлина) + " * " + ДокПрием. НомерСчетаФактуры) ;
Иначе
ДатаСчФ = лев( ДокПрием. ДатаНомерСчетаФактуры, 10 ) ;
ДатаСчетаФактуры = Дата( Сред( ДатаСчФ, 7 , 4 ) , Сред( ДатаСчФ, 4 , 2 ) , Лев( ДатаСчФ, 2 ) ) ;
НомерСчетаФактуры = СокрЛП( Сред( ДокПрием. ДатаНомерСчетаФактуры, 11 , 50 ) ) ;
ДокПрием. ДатаСчетаФактуры = ДатаСчетаФактуры;
ДокПрием. НомерСчетаФактуры = НомерСчетаФактуры;
ДокПрием. ДатаНомерСчетаФактуры = СокрЛП( НомерСчетаФактуры) + ";" + Формат( ДатаСчетаФактуры, "Д ДДММГГГГ" ) ;
Сообщить( " - " + НомерСчетаФактуры+ " / " + строка( ДатаСчетаФактуры) ) ;
ДокПрием. Записать( ) ;
Конецесли ;
КонецЦикла ;
КонецПроцедуры
Категория:
Документы Удаление документа Код 1C v 8.2 УП &НаКлиенте
Процедура УдалитьДокумент(Команда)
УдалитьДокументНаСервере( 0 ) ;
КонецПроцедуры
&НаСервере
Процедура УдалитьДокументНаСервере(ПометкаУдаления)
Перем УдаляемыйДокумент;
УдаляемыйДокумент = Документы. РасходнаяНакладная. НайтиПоНомеру( "000000004" ) ;
Если ПометкаУдаления = 1 Тогда
УдаляемыйДокумент. ПолучитьОбъект( ) . УстановитьПометкуУдаления( Истина ) ;
Иначе
УдаляемыйДокумент. ПолучитьОбъект( ) . Удалить( ) ;
КонецЕсли ;
КонецПроцедуры
Код 1C v 8.х
ТС= ЭлементыФормы. Список. ТекущиеДанные;
ТД= Документы. РеализацияТоваровУслуг. НайтиПоНомеру( ТС. Номер, ТС. Дата) ;
Если ТД. Пустая( ) Тогда
Сообщить( "Документ по номеру <такому то> не найден" ) ;
возврат ;
КонецЕсли ;
ТД. ПолучитьОбъект( ) . УстановитьПометкуУдаления( Истина ) ;
Код 1C v 8.х
Запрос = Новый Запрос( "ВЫБРАТЬ
| Заказы.Ссылка
|ИЗ
| Документ.Заказы КАК Заказы
|ГДЕ
| Заказы.ПометкаУдаления = ИСТИНА" ) ;
Выборка = Запрос. Выполнить( ) . Выбрать( ) ;
Пока Выборка. Следующий( ) Цикл
ОбъектДокумент = Выборка. Ссылка. ПолучитьОбъект( ) ;
ОбъектДокумент. Удалить( ) ;
КонецЦикла ;
Код 1C v 7.x Д = СоздатьОбъект( "Документ" ) ;
Д. ВыбратьДокументы( НачДата, КонДата) ;
Пока Д. ПолучитьДокумент( ) = 1 Цикл
Сообщить( Д. ТекущийДокумент( ) ) ;
Состояние( Д. ДатаДок) ;
Д. Удалить( ) ;
КонецЦикла ;
Категория:
Документы Как сделать, задать паузу при выполнении кода? Если это какая-нибудь обработка и запускается на клиенте(у пользователя) то можно использовать обработчик ожиданий у встроенных функций:
Код 1C v 8.х
Предупреждение( "Пауза!" , 60 ) ;
Если Вопрос( "Перепроведение?" , РежимДиалогаВопрос. ОКОтмена, 60 ) = КодВозвратаДиалога. Отмена Тогда
Возврат ;
КонецЕсли ;
Код 1C v 8.х
сек = 300 ;
КонДата = ТекущаяДата( ) + сек;
Пока ТекущаяДата( ) < КонДата Цикл
КонецЦикла ;
Для паузы можно использовать следующие примеры:
Код 1C v 8.х Процедура глПауза(Сек)
scr = Новый COMОбъект( "WScript.Shell" ) ;
scr. Run( "sleep " + СокрЛП( Число( Сек) ) , 0 , 1 ) ;
КонецПроцедуры ;
Код 1C v 7.x Процедура глПауза(Сек)
scr = СоздатьОбъект( "WScript.Shell" ) ;
scr. Run( "sleep " + СокрЛП( Число( Сек) ) , 0 , 1 ) ;
КонецПроцедуры ;
Категория:
COM-объекты, WMI, WSH Выгрузка используемых видов расчетов в таблицу значений Код 1C v 7.x ТЗВидыРасчётов = Новый ТаблицаЗначений;
ТЗВидыРасчётов. Колонки. Добавить( "ВидРасчёта" ) ;
ЖРЗарплата = v7. CreateObject( "ЖурналРасчетов.Зарплата" ) ;
ЖРЗарплата. ВыбратьЗаписи( НачДата, КонДата) ;
Пока ЖРЗарплата. ПолучитьЗапись( ) = 1 Цикл
СтрВидыРасчётов = ТЗВидыРасчётов. Добавить( ) ;
СтрВидыРасчётов. ВидРасчёта = ЖРЗарплата. ВидРасч. Наименование;
КонецЦикла ;
ЖРДополнительный = v7. CreateObject( "ЖурналРасчетов.Дополнительный" ) ;
ЖРДополнительный. ВыбратьЗаписи( НачДата, КонДата) ;
Пока ЖРДополнительный. ПолучитьЗапись( ) = 1 Цикл
СтрВидыРасчётов = ТЗВидыРасчётов. Добавить( ) ;
СтрВидыРасчётов. ВидРасчёта = ЖРДополнительный. ВидРасч. Наименование;
КонецЦикла ;
ЖРНалогиСФОТ = v7. CreateObject( "ЖурналРасчетов.НалогиСФОТ" ) ;
ЖРНалогиСФОТ. ВыбратьЗаписи( НачДата, КонДата) ;
Пока ЖРНалогиСФОТ. ПолучитьЗапись( ) = 1 Цикл
СтрВидыРасчётов = ТЗВидыРасчётов. Добавить( ) ;
СтрВидыРасчётов. ВидРасчёта = ЖРНалогиСФОТ. ВидРасч. Наименование;
КонецЦикла ;
ЖРСтраховыеВзносы = v7. CreateObject( "ЖурналРасчетов.СтраховыеВзносы" ) ;
ЖРСтраховыеВзносы. ВыбратьЗаписи( НачДата, КонДата) ;
Пока ЖРСтраховыеВзносы. ПолучитьЗапись( ) = 1 Цикл
СтрВидыРасчётов = ТЗВидыРасчётов. Добавить( ) ;
СтрВидыРасчётов. ВидРасчёта = ЖРСтраховыеВзносы. ВидРасч. Наименование;
КонецЦикла ;
Написал
IKSparrow Категория:
Виды расчетов Пример выгрузки списка документов в XML файл Код 1C v 8.х Процедура ДействияФормыВыгрузить(Кнопка)
Запись= Новый ЗаписьXML;
Запись. ОткрытьФайл( "c:\document.xml" ) ;
Запись. ЗаписатьОбъявлениеXML( ) ;
Запись. ЗаписатьНачалоЭлемента( "Корневой" ) ;
Запись. ЗаписатьАтрибут( "Доумент" , "ПринятиеКУчтетуОС" ) ;
Запись. ЗаписатьКомментарий( "Краткая информация о принятых к учету ОС" ) ;
Выборка= Документы. ПринятиеКУчетуОС. Выбрать( НачДата, КонДата) ;
Пока Выборка. Следующий( ) Цикл
Запись. ЗаписатьНачалоЭлемента( "Элемент" ) ;
Запись. ЗаписатьАтрибут( "Номер" , Строка( Выборка. Номер) ) ;
Запись. ЗаписатьАтрибут( "Дата" , Строка( Выборка. Дата) ) ;
Запись. ЗаписатьАтрибут( "Организация" , Строка( Выборка. Организация) ) ;
Запись. ЗаписатьАтрибут( "Склад" , Строка( Выборка. Склад) ) ;
Запись. ЗаписатьАтрибут( "ПодразделениеОрганизации" , Строка( Выборка. ПодразделениеОрганизации) ) ;
Запись. ЗаписатьАтрибут( "МОЛ" , Строка( Выборка. МОЛБУ) ) ;
Запись. ЗаписатьАтрибут( "Оборудование" , Строка( Выборка. Номенклатура) ) ;
Запись. ЗаписатьАтрибут( "ОбъектСтроительства" , Строка( Выборка. ОбъектСтроительства) ) ;
Запись. ЗаписатьАтрибут( "ПервоначальнаяСтоимость" , Строка( Выборка. ПервоначальнаяСтоимостьНУ) ) ;
Запись. ЗаписатьКонецЭлемента( ) ;
КонецЦикла ;
Запись. ЗаписатьКонецЭлемента( ) ;
Запись. Закрыть( ) ;
КонецПроцедуры
Категория:
JSON, XML, TXT, CSV, DBF Функции для работы с датами через запрос (Разность, Добавление, Граница) Код 1C v 8.х
Функция ПолучитьРазностьДат(рНачДата,рКонДата,рВидРазности="ДЕНЬ" ) Экспорт
Если не ЗначениеЗаполнено( рНачДата) или не ЗначениеЗаполнено( рКонДата) Тогда Возврат - 1 КонецЕсли ;
Если рНачДата= рКонДата Тогда Возврат 0 КонецЕсли ;
строСтандПер= "СЕКУНДА МИНУТА ЧАС ДЕНЬ НЕДЕЛЯ ДЕКАДА МЕСЯЦ КВАРТАЛ ГОД" ;
Если Найти( строСтандПер, рВидРазности) = 0 Тогда рВидРазности= "ДЕНЬ" КонецЕсли ;
тз= "ВЫБРАТЬ РАЗНОСТЬДАТ(&НачДата,&КонДата," + СокрЛП( рВидРазности) + ")+1 КАК ПериодовВремени" ;
з= Новый Запрос( тз) ;
Если рВидРазности= "СЕКУНДА" или рВидРазности= "МИНУТА" или рВидРазности= "ЧАС" Тогда
Если рНачДата> рКонДата Тогда
рПервая= рКонДата; рВторая= рНачДата; коэф= - 1 ;
Иначе
рПервая= рНачДата; рВторая= рКонДата; коэф= 1 ;
КонецЕсли ;
Иначе
Если рНачДата> рКонДата Тогда
рПервая= НачалоДня( рКонДата) ; рВторая= НачалоДня( рНачДата) ; коэф= - 1 ;
Иначе
рПервая= НачалоДня( рНачДата) ; рВторая= НачалоДня( рКонДата) ; коэф= 1 ;
КонецЕсли ;
КонецЕсли ;
Попытка
з. УстановитьПараметр( "НачДата" , рПервая) ;
з. УстановитьПараметр( "КонДата" , рВторая) ;
рРезультат= з. Выполнить( ) . Выгрузить( ОбходРезультатаЗапроса. Прямой) . Получить( 0 ) . ПериодовВремени;
Если ТипЗнч( рРезультат) < > Тип( "Число" ) Тогда Возврат - 1 Иначе Возврат коэф* рРезультат КонецЕсли ;
Исключение
Возврат - 1
КонецПопытки ;
КонецФункции
Функция ДобавитьКДате(рДата,рРазность,рВидРазности="ДЕНЬ" ) Экспорт
Если рРазность= 0 Тогда Возврат рДата КонецЕсли ;
строСтандПер= "СЕКУНДА МИНУТА ЧАС ДЕНЬ НЕДЕЛЯ ДЕКАДА МЕСЯЦ КВАРТАЛ ГОД" ;
Если Найти( строСтандПер, рВидРазности) = 0 Тогда рВидРазности= "ДЕНЬ" КонецЕсли ;
тз= "ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&УслДата," + СокрЛП( рВидРазности) + ",&УслРазность) КАК РезДата" ;
з= Новый Запрос( тз) ;
з. УстановитьПараметр( "УслДата" , рДата) ;
з. УстановитьПараметр( "УслРазность" , рРазность) ;
рРезультат= з. Выполнить( ) . Выгрузить( ОбходРезультатаЗапроса. Прямой) . Получить( 0 ) . РезДата;
Если ТипЗнч( рРезультат) < > Тип( "Дата" ) Тогда Возврат Дата( 1 , 1 , 1 ) Иначе Возврат рРезультат КонецЕсли ;
КонецФункции
Функция ГраницаПериода(рДата,рВидПериода="ДЕНЬ" ,рВидГраницы) Экспорт
строСтандПер= "СЕКУНДА МИНУТА ЧАС ДЕНЬ НЕДЕЛЯ ДЕКАДА МЕСЯЦ КВАРТАЛ ГОД" ;
Если Найти( строСтандПер, рВидПериода) = 0 Тогда рВидПериода= "ДЕНЬ" КонецЕсли ;
Если Найти( ВРег( рВидГраницы) , "НАЧ" ) < > 0 Тогда
рГраница= "НАЧАЛОПЕРИОДА" ;
ИначеЕсли Найти( ВРег( рВидГраницы) , "КОН" ) < > 0 Тогда
рГраница= "КОНЕЦПЕРИОДА" ;
Иначе
Возврат рДата;
КонецЕсли ;
тз= "ВЫБРАТЬ " + рГраница+ "(&УслДата," + СокрЛП( рВидПериода) + ") КАК РезДата" ;
з= Новый Запрос( тз) ;
з. УстановитьПараметр( "УслДата" , рДата) ;
рРезультат= з. Выполнить( ) . Выгрузить( ОбходРезультатаЗапроса. Прямой) . Получить( 0 ) . РезДата;
Если ТипЗнч( рРезультат) < > Тип( "Дата" ) Тогда Возврат Дата( 1 , 1 , 1 ) Иначе Возврат рРезультат КонецЕсли ;
КонецФункции
Категория:
Работа с Датами (Временем) Выбрать движения, получить выборку записей регистра накопления Пример 1 :
Код 1C v 8.х
Отбор = Новый Структура( "Организация" , Организация) ;
НаборЗаписей = РегистрыНакопления. ВзаиморасчетыСРаботникамиОрганизаций. Выбрать( ПериодРегистрации, КонецМесяца( ПериодРегистрации) , Отбор) ;
Пока Выборка. Следующий( ) Цикл
Сум= Сум+ Выборка. СуммаВзаиморасчетов;
КонецЦикла ;
Пример 2 :
Код 1C v 8.х
УчетНоменклатуры = РегистрыНакопления. УчетНоменклатуры;
ОтборПоТовару = Новый Структура( "Номенклатура" ) ;
ОтборПоТовару. Номенклатура = ВыбТовар;
НачДата = НачалоГода( ТекущаяДата( ) ) ;
КонДата = ТекущаяДата( ) ;
Выборка = УчетНоменклатуры. Выбрать( НачДата, КонДата, ОтборПоТовару) ;
Расход = 0 ;
Пока Выборка. Следующий( ) Цикл
Если Выборка. ВидДвижения = ВидДвиженияНакопления. Расход Тогда
Расход = Расход + Выборка. Количество;
КонецЕсли ;
КонецЦикла ;
Предупреждение( "Отгружено с начала года "" " + СокрЛП( ВыбТовар) + """ = " + Расход + " шт." ) ;
Пример 3 :
Код 1C v 8.х
Запрос= новый Запрос;
Запрос. Текст= "
|ВЫБРАТЬ
| ВзаиморасчетыСРаботникамиОрганизаций.СуммаВзаиморасчетов,
| ВзаиморасчетыСРаботникамиОрганизаций.СуммаВUSD,
| ВзаиморасчетыСРаботникамиОрганизаций.Физлицо
|ИЗ
| РегистрНакопления.ВзаиморасчетыСРаботникамиОрганизаций КАК ВзаиморасчетыСРаботникамиОрганизаций
|ГДЕ
| ВзаиморасчетыСРаботникамиОрганизаций.Физлицо = &Физлицо
| И ВзаиморасчетыСРаботникамиОрганизаций.ПериодВзаиморасчетов = &ПериодВзаиморасчетов
| И ВзаиморасчетыСРаботникамиОрганизаций.Организация = &Организация
| И ВзаиморасчетыСРаботникамиОрганизаций.ХарактерВыплаты = &ХарактерВыплаты
|" ;
Запрос. УстановитьПараметр( "Организация" , Организация) ;
Запрос. УстановитьПараметр( "ПериодВзаиморасчетов" , ПериодРегистрации) ;
Запрос. УстановитьПараметр( "Физлицо" , ТекущаяСтрока. Физлицо) ;
Запрос. УстановитьПараметр( "ХарактерВыплаты" , Перечисления. ХарактерВыплатыЗарплаты. ПлановыйАванс) ;
Результат = Запрос. Выполнить( ) ;
Результат = Результат. Выбрать( ) ;
Пока Результат. Следующий( ) Цикл
СумАванс= СумАванс+ Результат. СуммаВзаиморасчетов;
КонецЦикла ;
Категория:
Регистры накопления