PDA

Просмотр полной версии : Помогите разобраться с обработкой



miliimilii63
06.02.2020, 16:56
Всем привет. Есть обработка ввода счета и реализации, на основании старого счета. Отбирает по дате и комментарию. Что нужно изменить, чтобы документы выбирались по коментарию в котором содержится запрос? Допустим у меня в комментарии написаны свои пометки и вид услуги, я хочу выбрать документы по виду услуги, но с сохранением своих пометок. Чтобы комментарий был не равен моему запросу, а содержал его?
Помогите пожалуйста! Вот код:

Перем Комментарий;
Перем Текст;

///////////////////////////////////////////////////
// Обработка документов
///////////////////////////////////////////////////

Процедура КнопкаВыполнитьНажатие(Кн� �пка)
// Подсчитаем сколько документов пойдет в обработку
КоличествоДокументов = 0;
Для Каждого ТекущаяСтрока Из СписокДокументов Цикл
Если ТекущаяСтрока.Обработать Тогда
КоличествоДокументов = КоличествоДокументов +1;
КонецЕсли;
КонецЦикла;
Режим = РежимДиалогаВопрос.ДаНет;
Текст = "Будет обработано " + КоличествоДокументов + " документов. Продолжить?";
Ответ = Вопрос(Текст, Режим, 0, КодВозвратаДиалога.Нет, "Обработать Документы");
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;
Текст = "";
Для Каждого ТекущаяСтрока Из СписокДокументов Цикл
//Сообщить (ТекущаяСтрокаДокумент.Док умент.Метаданные().Имя);
Если ТекущаяСтрока.Документ.Мет аданные().Имя = "СчетНаОплатуПокупателю" Тогда
Если (СоздатьСчет Или ПечатьСчет) И ТекущаяСтрока.Обработать Тогда
СоздатьПечатьСчетНаОплату (ТекущаяСтрока);
ИначеЕсли (СоздатьАкт Или ПечатьАкт) И ТекущаяСтрока.Обработать Тогда
СоздатьАктУслуг(ТекущаяСт� �ока.Документ);
КонецЕсли;
КонецЕсли;
Если ТекущаяСтрока.Документ.Мет аданные().Имя = "РеализацияТоваровУслуг" Тогда
Если ПечатьАкт И ТекущаяСтрока.Обработать Тогда
ПечатьАктУслуг(ТекущаяСтр� �ка.Документ);
КонецЕсли;
КонецЕсли;
Если ТекущаяСтрока.Документ.Мет аданные().Имя = "СчетФактураВыданный" Тогда
Если ПечатьФактура И ТекущаяСтрока.Обработать Тогда
ПечатьФактуры(ТекущаяСтро� �а.Документ);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Сообщить("Обработка завершена");
КонецПроцедуры

Процедура СоздатьПечатьСчетНаОплату (ТекущаяСтрокаДокумент)
//Создание счета
Текст = "";
Если СоздатьСчет Тогда
СчетТекущий = ТекущаяСтрокаДокумент.Док� �мент.Ссылка;
СчетНовый = СчетТекущий.Скопировать();
СчетНовый.Дата = ДатаСчета;
СчетНовый.Ответственный = глЗначениеПеременной("глТекущийПользователь");

Если ИзменитьЦены = Истина Тогда
ТабУслуга = СчетНовый.Услуги;
Если ТабУслуга.Количество() > 0 Тогда
Для Каждого ТекущаяСтрока Из ТабУслуга Цикл
Отбор = Новый Структура("Номенклатура", ТекущаяСтрока.Номенклатур� �);
ЗначРесурсов = РегистрыСведений.ЦеныНоме� �клатуры.ПолучитьПоследнее (ДатаСчета, Отбор);
Если ЗначРесурсов.Цена <> 0 Тогда
ТекущаяСтрока.Цена = ЗначРесурсов.Цена;
ОбработкаТабличныхЧастей.� �ассчитатьСуммуТабЧасти(Те кущаяСтрока, СчетНовый, 1);
ОбработкаТабличныхЧастей.� �ассчитатьСуммуНДСТабЧаст� �(ТекущаяСтрока, СчетНовый);
Иначе
Сообщить("Цены не определены: " + СчетНовый + " # Услуга - " + ТекущаяСтрока.Номенклатур� �);
Сигнал();
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
СчетНовый.Записать();
Текст = "Записан :";
СчетПечать = СчетНовый;
Иначе
СчетПечать = ТекущаяСтрокаДокумент.Док� �мент.ПолучитьОбъект();
КонецЕсли;
// Печать счета
Если (ПечатьСчет = Истина) и (ЭкземпляровСчет > 0) Тогда
Если ПросмотрПечати = Истина Тогда
НаПринтер = Ложь;
Иначе
НаПринтер = Истина;
КонецЕсли;
//МетаданныеОбъекта = СчетПечать.Метаданные();
Если УниверсальныеМеханизмы.На� �ечататьДокументПоУмолчан� �ю(СчетПечать,ЭкземпляровС� �ет, НаПринтер, Истина) Тогда
Текст = ?(Текст = "", "Распечатан: ", "Записан и распечатан: ");
КонецЕсли;
КонецЕсли;
Сообщить (Текст + СчетПечать);
Текст = "";
// Передать в Акт
Если СоздатьАкт Тогда
СоздатьАктУслуг(СчетПечат� �);
КонецЕсли;
КонецПроцедуры

Процедура СоздатьАктУслуг(СчетНаОпл� �ту)
// Создание Акта

АктУслуг = Документы.РеализацияТовар� �вУслуг.СоздатьДокумент();
АктУслуг.Дата = ДатаАкта;
АктУслуг.Заполнить(СчетНаО плату.Ссылка);
АктУслуг.ВидОперации = Перечисления.ВидыОпераций� �еализацияТоваров.ПродажаК омиссия;
АктУслуг.Ответственный = глЗначениеПеременной("глТекущийПользователь");
АктУслуг.Комментарий = Комментарий;
ТаблУслуга = АктУслуг.Услуги;
АктУслуг.Записать();
Текст = "Записан :";
// Отправляем на печать
ПечатьАктУслуг(АктУслуг);
КонецПроцедуры

Процедура ПечатьАктУслуг(АктУслуг)
// Подготовка документа к печати
Если СоздатьАкт Тогда
АктПечать = АктУслуг;
Иначе
АктПечать = АктУслуг.ПолучитьОбъект();
КонецЕсли;
// Печать Акта
Если (ПечатьАкт = Истина) и (ЭкземпляровАкт > 0) Тогда
Если ПросмотрПечати = Истина Тогда
НаПринтер = Ложь;
Иначе
НаПринтер = Истина;
КонецЕсли;
Если УниверсальныеМеханизмы.На� �ечататьДокументПоУмолчан� �ю(АктПечать, ЭкземпляровАкт, НаПринтер, Истина) Тогда
Текст = ?(Текст = "", "Распечатан: ", "Записан и распечатан: ");
КонецЕсли;
КонецЕсли;
Сообщить (Текст + АктПечать);
Текст = "";
// Передать в Фактуру
Если СоздатьФактуру Или ПечатьФактура Тогда
СоздатьФактуру(АктПечать);
КонецЕсли;
КонецПроцедуры

Процедура СоздатьФактуру(АктУслуг)
// Создать Фактуру
Текст = "";
СчетФактура = Документы.СчетФактураВыда� �ный.СоздатьДокумент();
СчетФактура.Дата = ДатаАкта;
СчетФактура.УстановитьВре� �я(РежимАвтоВремя.Последни� �);
СчетФактура.Заполнить(АктУ слуг.Ссылка);
СчетФактура.Ответственный = глЗначениеПеременной("глТекущийПользователь");
СчетФактура.Комментарий = Комментарий;
СчетФактура.Записать(Режим ЗаписиДокумента.Проведени� �);
Текст = "Записан :";
// Отправляем на печать
ПечатьФактуры(СчетФактура) ;
КонецПроцедуры

Процедура ПечатьФактуры(СчетФактура)
// Подготовка документа к печати
Если СоздатьФактуру Тогда
ФактураПечать = СчетФактура;
Иначе
ФактураПечать = СчетФактура.ПолучитьОбъек� �();
КонецЕсли;
// Печать Фактуры
Если (ПечатьФактура = Истина) и (ЭкземпляровФактура > 0) Тогда
Если ПросмотрПечати = Истина Тогда
НаПринтер = Ложь;
Иначе
НаПринтер = Истина;
КонецЕсли;
Если УниверсальныеМеханизмы.На� �ечататьДокументПоУмолчан� �ю(ФактураПечать, ЭкземпляровФактура, НаПринтер, Истина) Тогда
Текст = ?(Текст = "", "Распечатан: ", "Записан и распечатан: ");
КонецЕсли;
КонецЕсли;
Сообщить(Текст + ФактураПечать);
Текст = "";
КонецПроцедуры

/////////////////////////////////////////////////////
// Обработка действий формы и элементов
/////////////////////////////////////////////////////

Процедура ПриОткрытии()
// Заполняем начальные значения реквизитов и параметров
НачалоПериода = НачалоМесяца(ДобавитьМеся� �(ТекущаяДата(), -1));
КонецПериода = КонецМесяца(ДобавитьМесяц( ТекущаяДата(), -1));
ДатаСчета = ТекущаяДата();
ДатаАкта = КонецМесяца(ТекущаяДата());
ЭкземпляровСчет = 1;
ЭкземпляровАкт = 2;
ЭкземпляровФактура = 1;
ПросмотрПечати = Ложь;
Комментарий = "";
КомментарийОтбор = Комментарий;
ЭлементыФормы.СоздатьФакт� �ру.Доступность = Ложь;
ЭлементыФормы.ПечатьАкт.До ступность = Ложь;
ЭлементыФормы.ПечатьФакту� �а.Доступность = Ложь;
ЭлементыФормы.ПросмотрПеч� �ти.Доступность = Ложь;
КонецПроцедуры

Процедура ПериодНажатие(Элемент)
// Настроиваем период заполнения документов
НастройкаПериода = Новый НастройкаПериода;
НастройкаПериода.Установи� �ьПериод(НачалоПериода, ?(КонецПериода='0001-01-01', КонецПериода, КонецДня(КонецПериода)));
НастройкаПериода.Редактир� �ватьКакИнтервал = Истина;
НастройкаПериода.Редактир� �ватьКакПериод = Истина;
НастройкаПериода.ВариантН� �стройки = ВариантНастройкиПериода.П� �риод;
Если НастройкаПериода.Редактир� �вать() Тогда
НачалоПериода = НастройкаПериода.Получить� �атуНачала();
КонецПериода = НастройкаПериода.Получить� �атуОкончания();
КонецЕсли;
КонецПроцедуры

Функция ПроверкаПериода()
Если КонецПериода < НачалоПериода Тогда
Предупреждение("Недопустимый период!");
Возврат 1;
КонецЕсли;
Возврат 0;
КонецФункции

Процедура ЗаполнитьНажатие(Элемент)
Если ПроверкаПериода() = 1 Тогда
Возврат;
КонецЕсли;
Режим = РежимДиалогаВопрос.ДаНет;
Если СписокДокументов.Количест� �о() > 0 Тогда
Ответ = Вопрос("Список счетов будет очищен. Продолжить?", Режим);
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
СписокДокументов.Очистить( );
КонецЕсли;
КонецЕсли;
Если Переключатель1 = 0 Тогда
Выборка = Документы.СчетНаОплатуПок� �пателю.Выбрать(НачалоПери� �да, КонецПериода);
КонецЕсли;
Если Переключатель1 = 1 Тогда
Выборка = Документы.РеализацияТовар� �вУслуг.Выбрать(НачалоПери� �да, КонецПериода);
КонецЕсли;
Если Переключатель1 = 2 Тогда
Выборка = Документы.СчетФактураВыда� �ный.Выбрать(НачалоПериода, КонецПериода);
КонецЕсли;
Пока Выборка.Следующий() Цикл
Если Выборка.ПометкаУдаления = Истина Или (Выборка.Комментарий <> КомментарийОтбор И КомментарийОтбор <> "") Тогда
Продолжить;
КонецЕсли;
НовСтрока = СписокДокументов.Добавить( );
НовСтрока.Обработать = 1;
НовСтрока.Документ = Выборка.Ссылка;
НовСтрока.Контрагент = Выборка.Контрагент;
НовСтрока.СуммаПоДокумент� � = Выборка.СуммаДокумента;
НовСтрока.Комментарий = Выборка.Комментарий;
КонецЦикла;
КонецПроцедуры

Процедура ВыбратьВсе(Кнопка)
Для Каждого ТекущаяСтрока Из СписокДокументов Цикл
ТекущаяСтрока.Обработать = Истина;
КонецЦикла;
КонецПроцедуры

Процедура СброситьВсе(Кнопка)
Для Каждого ТекущаяСтрока Из СписокДокументов Цикл
ТекущаяСтрока.Обработать = Ложь;
КонецЦикла;
КонецПроцедуры

Процедура СписокДокументовДокументП риИзменении(Элемент, СтандартнаяОбработка)
ТекущаяСтрока = ЭлементыФормы.СписокДокум� �нтов.ТекущиеДанные;
ТекущийДокумент = ТекущаяСтрока.Документ;
ТекущаяСтрока.Обработать = 1;
ТекущаяСтрока.Контрагент = ТекущийДокумент.Контраген� �;
ТекущаяСтрока.СуммаПоДоку� �енту = ТекущийДокумент.СуммаДоку� �ента;
ТекущаяСтрока.Комментарий = ТекущийДокумент.Комментар� �й;
КонецПроцедуры

Процедура СоздатьСчетПриИзменении(Э� �емент)
Если СоздатьСчет Тогда
Иначе
ЭлементыФормы.ПечатьАкт.До ступность = Ложь;
ЭлементыФормы.ПечатьФакту� �а.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры

Процедура СоздатьАктПриИзменении(Эл� �мент)
Если СоздатьАкт = Истина Тогда
СоздатьФактуру = Истина;
ЭлементыФормы.СоздатьФакт� �ру.Доступность = Истина;
ЭлементыФормы.ПечатьАкт.До ступность = Истина;
ЭлементыФормы.ПечатьФакту� �а.Доступность = Истина;
Иначе
СоздатьФактуру = Ложь;
ПечатьАкт = Ложь;
ПечатьФактура = Ложь;
ЭлементыФормы.СоздатьФакт� �ру.Доступность = Ложь;
ЭлементыФормы.ПечатьАкт.До ступность = Ложь;
ЭлементыФормы.ПечатьФакту� �а.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры

Процедура СоздатьФактуруПриИзменени и(Элемент)
Если СоздатьФактуру Тогда
ЭлементыФормы.ПечатьФакту� �а.Доступность = Истина;
Иначе
ПечатьФактура = Ложь;
ЭлементыФормы.ПечатьФакту� �а.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры

Процедура Переключатель1ПриИзменени� �(Элемент)
Если Переключатель1 = 0 Тогда
ПечатьАкт = Ложь;
ПечатьФактура = Ложь;
СоздатьФактуру = Ложь;
ЭлементыФормы.СоздатьСчет. Доступность = Истина;
ЭлементыФормы.ПечатьСчет.Д оступность = Истина;
ЭлементыФормы.СоздатьАкт.Д оступность = Истина;
ЭлементыФормы.ПечатьАкт.До ступность = Ложь;
ЭлементыФормы.СоздатьФакт� �ру.Доступность = Ложь;
ЭлементыФормы.ПечатьФакту� �а.Доступность = Ложь;
КонецЕсли;
Если Переключатель1 = 1 Тогда
СоздатьСчет = Ложь;
ПечатьСчет = Ложь;
СоздатьАкт = Ложь;
ПечатьФактура = Ложь;
ЭлементыФормы.СоздатьСчет. Доступность = Ложь;
ЭлементыФормы.ПечатьСчет.Д оступность = Ложь;
ЭлементыФормы.СоздатьАкт.Д оступность = Ложь;
ЭлементыФормы.ПечатьАкт.До ступность = Истина;
ЭлементыФормы.СоздатьФакт� �ру.Доступность = Истина;
ЭлементыФормы.ПечатьФакту� �а.Доступность = Ложь;
КонецЕсли;
Если Переключатель1 = 2 Тогда
СоздатьСчет = Ложь;
ПечатьСчет = Ложь;
СоздатьАкт = Ложь;
ПечатьАкт = Ложь;
СоздатьФактуру = Ложь;
ЭлементыФормы.СоздатьСчет. Доступность = Ложь;
ЭлементыФормы.ПечатьСчет.Д оступность = Ложь;
ЭлементыФормы.СоздатьАкт.Д оступность = Ложь;
ЭлементыФормы.ПечатьАкт.До ступность = Ложь;
ЭлементыФормы.СоздатьФакт� �ру.Доступность = Ложь;
ЭлементыФормы.ПечатьФакту� �а.Доступность = Истина;
КонецЕсли;
КонецПроцедуры

Fltr
06.02.2020, 17:06
Может лучше выложить саму обработку? Какие используете конфигурацию и платформу?

miliimilii63
07.02.2020, 08:27
Да, прошу прощения.
ССылка на обработку: https://yadi.sk/d/1olsuqM19y0dEg

miliimilii63
07.02.2020, 08:30
1С:Предприятие 8.2 (8.2.19.83)
"Управление торговлей", редакция 10.3 (10.3.29.1)

miliimilii63
11.02.2020, 13:52
Помогите пожалуйста

bikbaev
11.02.2020, 16:47
Если структура комментария Вам известна , тогда в запрос добавьте условия типа
ПОДСТРОКА(.Комментарий,...) ПОДОБНО "..." и т.д.