24 сент. 2019 г.

Не затирать ПКС при выгрузке регистра сведений

Конвертация данных. Нужно перенести из одной базы в другую непериодический независимый регистр сведений.
Переносить нужно к уже существующим записям только значение одного ресурса, все другие ресурсы перезаписывать нельзя.

Решение:
В ПКО регистра сведений в обработчике После выгрузки пишем
ИсходныеДанные = НаборЗаписей.Выгрузить();
Свойства = "ИмяПоля1,ИмяПоля2";//список ресурсов, которые не нужно замещать
Для Каждого Запись из НаборЗаписей Цикл
    СтруктураРезультат = РегистрыСведений.НеПериодичныйНеПодчиненныйРегистратору.Получить(Новый Структура("Номенклатура", Запись.Номенклатура));
    ЗаполнитьЗначенияСвойств(Запись, СтруктураРезультат, Свойства, );
КонецЦикла;

3 сент. 2019 г.

DirectActive, атрибут nameInSecondConfiguration, значение ключа - "Клиент"

После восстановления ранее сохраненных настроек изменения объединения конфигураций с разными релизами бывает такая ситуация
DirectActive, атрибут nameInSecondConfiguration, значение ключа - "Клиент"

Решение:

из файла сохраненных настроек удаляем все строки целиком, что связаны с текстом
<DirectiveArea name="Клиент " nameInSecondConfiguration="Клиент ">"
начинать удаление из конца файла.

После каждого удаления строки, сохраняем файл и проверяем результат.

В схеме базы данных нет таблицы с именем ConstChngR15098

Ошибка
В процессе обновления информационной базы произошла критическая ошибка
по причине:
Ошибка SDBL:
В схеме базы данных нет таблицы с именем ConstChngR15098
показалась во время применения обновления конфигурации до следующего релиза.

Решение оказалось изменить Режим совместимости, на тот, который был до обновления релиза


9 июл. 2019 г.

Получить контактную информацию

Автор не я.
/// Вх Параметры: Например Объект - Документ,Контрагент,КонтактноеЛицоКонтрагнета,КонтактноеЛицо
/// Тип - тип контактной информации , Вид - вид контактной информации , 
/// Вых Параметры: Массив Структур , возращает массив с структурой Объект,Вид_КИ,Значение_КИ
Функция Получить_Все_ВозможныеВиды_КИ_Объекта(СсылкаЗнч,Тип_КИ,Вид_КИ = Неопределено) Экспорт
           
            //// В документе ищет свойства и если в свойстах есть имеил тогда п
            ЭтоДокумент = Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаЗнч));
            МассивВозврата          = Новый Массив;
            СоотвествияЗнч          = Новый Соответствие;
           
            ТекКонтрагент = Неопределено;
            ТекКонтактноеЛицоКонтрагнета = Неопределено;
            ТекКонтактноеЛицо    = Неопределено;
           
            Если ЭтоДокумент Тогда
                       
                        ///// Пока только для документа ЗаказПокупателя
                        Если ТипЗнч(СсылкаЗнч) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
                                   
                                    ТаблицаПустая = Ложь;
                                   
                                    Запрос = Новый Запрос("ВЫБРАТЬ
                                    |           ЗначенияСвойствОбъектов.Свойство,
                                    |           ЗначенияСвойствОбъектов.Значение,
                                    |           ЗначенияСвойствОбъектов.Свойство.Наименование КАК Наименование_Свойства,
                                    |           ЗначенияСвойствОбъектов.Свойство.ТипЗначения КАК ТипЗначения
                                    |ИЗ
                                    |           РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                                    |ГДЕ
                                    |           ЗначенияСвойствОбъектов.Объект = &amp;Объект");
                                   
                                    Запрос.УстановитьПараметр("Объект",СсылкаЗнч);
                                    Выборка = Запрос.Выполнить().Выбрать();
                                    Если Выборка.Количество() = 0 Тогда
                                               ТаблицаПустая = Истина;
                                    КонецЕсли;
                                   
                                    СоотвествиеСвойств = Новый Соответствие;
                                    Пока Выборка.Следующий() Цикл
                                               СоотвествиеСвойств.Вставить(Выборка.Свойство,Выборка.Значение);
                                    КонецЦикла;
                                   
                                   
                                    ТаблицаСоотвествий = Константы.Простир_СоотвествиеСвойствЗаказу_РеквизитамКонтрагента.Получить();
                                   
                                   
                                    Если Не ЗначениеЗаполнено(ТаблицаСоотвествий) Тогда
                                               ТаблицаПустая = Истина;
                                    КонецЕсли;
                                   
                                    ТаблицаСоотвествий = ЗначениеИзСтрокиВнутр(ТаблицаСоотвествий);
                                    Если ТаблицаСоотвествий.Количество() = 0 Тогда
                                               ТаблицаПустая = Истина;      
                                    КонецЕсли;
                                   
                                    Если НЕ ТаблицаПустая Тогда
                                              
                                               Для Каждого Стр Из ТаблицаСоотвествий Цикл
                                                           Если ЗначениеЗаполнено(Вид_КИ) Тогда
                                                                       Если Стр.РеквизитКонтрагента = Вид_КИ Тогда
                                                                                   ЗначениеСвойства = СоотвествиеСвойств.Получить(Стр.РеквизитКонтрагента);
                                                                                   Если ЗначениеЗаполнено(ЗначениеСвойства) Тогда                                                                                   
                                                                                               МассивВозврата.Добавить(Новый Структура("Объект,Вид_КИ,Значение_КИ",СсылкаЗнч,Стр.РеквизитКонтрагента,ЗначениеСвойства));
                                                                                   КонецЕсли;
                                                                       КонецЕсли;
                                                                      
                                                           ИначеЕсли ТипЗнч(Стр.РеквизитКонтрагента) = Тип("СправочникСсылка.ВидыКонтактнойИнформации") И
                                                                       Стр.РеквизитКонтрагента.Тип = Тип_КИ Тогда         
                                                                      
                                                                       ЗначениеСвойства = СоотвествиеСвойств.Получить(Стр.ИмяСовойстваЗаказа);
                                                                       Если ЗначениеЗаполнено(ЗначениеСвойства) Тогда
                                                                                   МассивВозврата.Добавить(Новый Структура("Объект,Вид_КИ,Значение_КИ",СсылкаЗнч,Стр.РеквизитКонтрагента,ЗначениеСвойства));
                                                                       КонецЕсли;
                                                                      
                                                           КонецЕсли;
                                               КонецЦикла;
                                    КонецЕсли;
                                   
                        КонецЕсли;                                                     
                       
                        Если СсылкаЗнч.Метаданные().Реквизиты.Найти("Контрагент") <> Неопределено Тогда                          
                                    ТекКонтрагент = СсылкаЗнч.Контрагент;
                        КонецЕсли;
                       
            КонецЕсли;
           
            Если ТипЗнч(СсылкаЗнч) = Тип("СправочникСсылка.Контрагенты") Тогда
                        ТекКонтрагент = СсылкаЗнч;
            КонецЕсли;
           
            Если ЗначениеЗаполнено(ТекКонтрагент) Тогда
                       
                        МассивОбъектов_КИ = Новый Массив;
                        МассивОбъектов_КИ.Добавить(ТекКонтрагент);
                       
                        Выборка_КонтактныеЛица_Контрагентов = Справочники.КонтактныеЛицаКонтрагентов.Выбрать(,ТекКонтрагент);
                        Пока Выборка_КонтактныеЛица_Контрагентов.Следующий() Цикл
                                   
                                    Если Выборка_КонтактныеЛица_Контрагентов.ПометкаУдаления Тогда
                                               Продолжить;
                                    КонецЕсли;
                                   
                                    МассивОбъектов_КИ.Добавить(Выборка_КонтактныеЛица_Контрагентов.Ссылка);
                                    Если НЕ Выборка_КонтактныеЛица_Контрагентов.КонтактноеЛицо.Пустая() Тогда
                                                МассивОбъектов_КИ.Добавить(Выборка_КонтактныеЛица_Контрагентов.КонтактноеЛицо);
                                    КонецЕсли;
                                   
                        КонецЦикла;
                       
                        Запрос = Новый Запрос("ВЫБРАТЬ
                                              |           КонтактнаяИнформация.Представление,
                                              |           КонтактнаяИнформация.Объект,
                                              |           КонтактнаяИнформация.Вид
                                              |ИЗ
                                              |           РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                                              |ГДЕ
                                              |           КонтактнаяИнформация.Объект В(&amp;Объект)
                                              |           И КонтактнаяИнформация.Тип = &amp;Тип");
                        Запрос.УстановитьПараметр("Объект",МассивОбъектов_КИ);
                        Запрос.УстановитьПараметр("Тип",Тип_КИ);
                       
                        Выборка = Запрос.Выполнить().Выбрать();
                       
                        Пока Выборка.Следующий() Цикл
                                    МассивВозврата.Добавить(Новый Структура("Объект,Вид_КИ,Значение_КИ",Выборка.Объект,Выборка.Вид,Выборка.Представление));                 
                        КонецЦикла;
                       
                       
            КонецЕсли;
           
            Возврат МассивВозврата;
           
КонецФункции
 
 
МассивКонтактнойИнформации = Получить_Все_ВозможныеВиды_КИ_Объекта(пДокументСсылка, Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты, );

Отобразить тип \ спрятать типы по кнопке выбрать

Задача: “реквизит имеет неоднозначный тип т.е. (СправочникСсылка, ДокументСсылка), при нажатии кнопки выбора нужно спрятать \ отобразить нужные типы”.
    МассивТипов = Новый Массив;
    МассивТипов.Добавить(Тип("СправочникСсылка.Контрагенты"));
    МассивТипов.Добавить(Тип("СправочникСсылка.Организации"));
    ГрузоотправительТипы = Новый ОписаниеТипов(МассивТипов);
    
    Элементы.Грузоотправитель.ОграничениеТипа = ГрузоотправительТипы;
    Элементы.Грузоотправитель.ВыбиратьТип = Истина;
    
    Если ВидОперации = Перечисления.Инт_ВидыОперацийЗаявкаНаПеревозку.Поставка Тогда  
        Элементы.Грузоотправитель.ОграничениеТипа = Новый ОписаниеТипов("СправочникСсылка.Контрагенты");    
        Элементы.Грузоотправитель.ВыбиратьТип = Ложь;
    КонецЕсли;    

8 июл. 2019 г.

Открыть форму с отбором по владельцу (программно)

    НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "Объект.Грузоотправитель");
    НовыйМассив = Новый Массив();
    НовыйМассив.Добавить(НоваяСвязь);    
    Элементы.ПунктПогрузки.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);    

Программное добавление отборов (ИЛИ)

    Форма = ПолучитьФорму("РегистрСведений.Долги.ФормаСписка");
        
    ГруппаОтбора = Форма.Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.Использование = Истина;
    ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
    
    ЭлементОтбора1 = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));    
    ЭлементОтбора1.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДокументРаботы");
    ЭлементОтбора1.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора1.Использование = Истина;
    ЭлементОтбора1.ПравоеЗначение = Объект.Ссылка;
    
    ЭлементОтбора2 = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора2.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДокументОснование");
    ЭлементОтбора2.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора2.Использование = Истина;
    ЭлементОтбора2.ПравоеЗначение = Объект.Ссылка;
    
    Форма.Открыть();

Программное добавление\удаление обязательных для заполнения реквизитов

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
  
  Если ТипЗнч(Грузоотправитель) = Тип("СправочникСсылка.Организации") Тогда
        ПроверяемыеРеквизиты.Добавить("Бухгалтер");
        ПроверяемыеРеквизиты.Добавить("Отпустил");
    КонецЕсли;
    
    Если инт_СтороннийПеревозчик Тогда
        ПроверяемыеРеквизиты.Очистить();
                                           
        ПроверяемыеРеквизиты.Добавить("Грузоотправитель");
        ПроверяемыеРеквизиты.Добавить("Подразделение");
        ПроверяемыеРеквизиты.Добавить("Дата");
        ПроверяемыеРеквизиты.Добавить("Грузополучатель");
    КонецЕсли;
    
КонецПроцедуры

Сохранить файлы в ХранилищеЗначений (Сохранение \ Восстановление)

&НаКлиенте
Процедура Завантажити(Команда)
        ИмяФайла = "";
        ПутьФайла = "";
        НачатьПомещениеФайла(Новый ОписаниеОповещения("ПослеЗавершенияПомещения",ЭтаФорма),ПутьФайла,ИмяФайла,Истина);               
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗавершенияПомещения(Результат,Адрес, ВыбранноеИмяФайла,ДопПараметры) Экспорт 
        Если Результат Тогда 
                Файл = Новый Файл(ВыбранноеИмяФайла);
               
                ДопПараметры = Новый Структура;
                ДопПараметры.Вставить("Файл",Файл);
                ДопПараметры.Вставить("ИмяБезРасширения",Файл.ИмяБезРасширения);
                ДопПараметры.Вставить("ВыбранноеИмяФайла",ВыбранноеИмяФайла);
                ДопПараметры.Вставить("Расширение",Файл.Расширение);
               
                Файл.НачатьПроверкуСуществования(Новый ОписаниеОповещения("НачатьПроверкуСуществованияЗавершение",ЭтаФорма,ДопПараметры)) 
        КонецЕсли; 
КонецПроцедуры

&НаКлиенте
Процедура НачатьПроверкуСуществованияЗавершение(Существует,ДопПараметры) Экспорт 
        Если Существует Тогда 
                ДопПараметры.Файл.НачатьПолучениеРазмера(Новый ОписаниеОповещения("НачатьПолучениеРазмераЗавершение",ЭтаФорма,ДопПараметры));
        КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура НачатьПолучениеРазмераЗавершение(Размер, ДопПараметры) Экспорт 
        Если Размер > 10000000 Тогда 
                Сообщить("Розмір файлу не повинен бути більше 10 МБ!");
                Объект.Розширення = "";
                Объект.Наименование = "";
                Возврат;
        КонецЕсли;
       
        ДопПараметры.Удалить("Файл");
        НачатьСозданиеДвоичныхДанныхИзФайла(Новый ОписаниеОповещения("ДДЗавершение",ЭтаФорма,ДопПараметры),ДопПараметры.ВыбранноеИмяФайла);   
КонецПроцедуры

&НаСервере
Процедура ДДЗавершение(ДД,ДопПараметры) Экспорт 
        _Объект = РеквизитФормыВЗначение("Объект");
        _Объект.Файл = Новый ХранилищеЗначения(ДД,Новый СжатиеДанных(9));
        _Объект.Наименование = ДопПараметры.ИмяБезРасширения;
        _Объект.Розширення = ДопПараметры.Расширение;
        _Объект.Записать();
        ЗначениеВРеквизитФормы(_Объект,"Объект");
КонецПроцедуры

&НаКлиенте
Процедура Вивантажити(Команда)     
        Если ЭтаФорма.Модифицированность Тогда 
                Сообщить("З початку потрібно зберегти об'єкт");
                Возврат;
        КонецЕсли;
       
        ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
        ДиалогСохраненияФайла.Заголовок = "Зберегти файл"; 
        ДиалогСохраненияФайла.Показать(Новый ОписаниеОповещения("ПослеЗавершенияИзвлечения",ЭтаФорма));
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗавершенияИзвлечения(СписокФайлов,ДопПараметры) Экспорт 
        ДД = ПолучитьФайл();
       
        Если ДД = Неопределено Или ТипЗнч(ДД) <> Тип("ДвоичныеДанные") Тогда 
                Сообщить("Помилка при зберіганні");
                Возврат;
        КонецЕсли;
       
        Путь = СписокФайлов[0] +"\"+ Объект.Наименование + Объект.Розширення;             
        ДД.НачатьЗапись(Новый ОписаниеОповещения("ДДНачалоЗапись",ЭтаФорма),Путь); 
        ПоказатьПредупреждение(Новый ОписаниеОповещения("ПоказатьПредупреждениеПриЗавершении",ЭтаФорма),"Збережено по шляху " + Путь,,"Увага");
КонецПроцедуры

&НаСервере
Функция ПолучитьФайл()
        Возврат Объект.Ссылка.Файл.Получить();
КонецФункции

&НаКлиенте
Процедура ПоказатьПредупреждениеПриЗавершении(ДопПараметры) Экспорт 
КонецПроцедуры

&НаКлиенте
Процедура ДДНачалоЗапись(ДопПараметры) Экспорт   
КонецПроцедуры

Отбор в выпадающем списке

Задача: “сделать, чтобы при выпадающем списке не показывало одно значение перечисление”

Добавить реквизит на форму








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

Получить ближайшую рабочую дату от произвольной даты

&НаКлиенте
Процедура Команда1(Команда)
            Сообщить(ПолучитьБлижайшуюРабочуюДатуОтИсходнойДаты(ДатаКалендаря));        
КонецПроцедуры

Функция ПолучитьБлижайшуюРабочуюДатуОтИсходнойДаты(Знач ИсходнаяДата)       
            
            ИсходнаяДата = НачалоДня(ИсходнаяДата);
            ИсходнаяДата = ИсходнаяДата + 24 * 60 * 60;
            Пока Истина Цикл      
                        
                        Запрос = Новый Запрос;
                        Запрос.Текст =
                        "ВЫБРАТЬ
                        |           РегламентированныйПроизводственныйКалендарь.ВидДня
                        |ИЗ
                        |           РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
                        |ГДЕ
                        |           РегламентированныйПроизводственныйКалендарь.ДатаКалендаря = &ДатаКалендаря";
                        
                        Запрос.УстановитьПараметр("ДатаКалендаря", ИсходнаяДата);              
                        РезультатЗапроса = Запрос.Выполнить();
                        
                        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();                       
                        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                                    Если ВыборкаДетальныеЗаписи.ВидДня = ПредопределенноеЗначение("Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий") Тогда
                                               Возврат ИсходнаяДата;
                                    Иначе
                                               ИсходнаяДата = НачалоДня(ИсходнаяДата);
                                               ИсходнаяДата = ИсходнаяДата + 24 * 60 * 60;
                                    КонецЕсли;
                        КонецЦикла;
                        
            КонецЦикла;
            
КонецФункции
 

Ввести на основании (на клиенте)

&НаКлиенте
Процедура ТранспортнаяНакладная(Команда) 
    Форма = ПолучитьФорму("Документ.ТранспортнаНакладна.Форма.ФормаДокумента");
    ДанныеФормы = Форма.Объект;
    
    ТранспортнаяНакладнаяСервер(ДанныеФормы);
    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
    
    Форма.Открыть();
КонецПроцедуры

&НаСервере
Процедура ТранспортнаяНакладнаяСервер(ДанныеФормы) 
    текДок = Элементы.Список.ТекущаяСтрока.Ссылка;
        
     Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ТранспортнаНакладна"));
     Док.Заполнить(текДок);
    
     ЗначениеВДанныеФормы(Док, ДанныеФормы);
КонецПроцедуры

Записать документ без проведения

ДокОбъект = Ссылка.ПолучитьОбъект(); 

Если  ДокОбъект.Проведен Тогда
    ДокОбъект.Проведен = Истина; 
ИначеЕсли  ДокОбъект.Проведен = Ложь Тогда

ИначеЕсли  ДокОбъект.ПомеченНаУдаления Тогда
    ДокОбъект.ПомеченНаУдаление = Истина;
КонецЕсли;

ДокОбъект.ОбменДанными.Загрузка = Истина; 
ДокОбъект.Записать();

13 мар. 2019 г.

Сократить ссылки через 1С

Что бы сократить ссылку через 1С используя сайт https://clck.ru/ пишем

Процедура КнопкаВыполнитьНажатие(Кнопка)
 Сообщить(СократитьСсылку("http://copyraite.blogspot.com"));    
КонецПроцедуры

Функция СократитьСсылку(Ссылка) Экспорт 
 Ссылка = КодироватьСтроку(Ссылка, СпособКодированияСтроки.КодировкаURL,); 
 Адрес = "https://clck.ru/--?url="+Ссылка;
 
 ХМЛХТТП = ПолучитьCOMОбъект("", "Microsoft.XMLHTTP");
 ХМЛХТТП.Open("GET", Адрес, Ложь);
 ХМЛХТТП.Send(Null);
 Возврат СокрЛП(ХМЛХТТП.ResponseText);
КонецФункции

для использования https://is.gd/ сервиса изменяем только адрес сервиса и описания параметров

Процедура КнопкаВыполнитьНажатие(Кнопка)
 Сообщить(СократитьСсылку("http://copyraite.blogspot.com")); 
КонецПроцедуры

Функция СократитьСсылку(Ссылка) Экспорт 
 Ссылка = КодироватьСтроку(Ссылка, СпособКодированияСтроки.КодировкаURL,); 
 Адрес = "https://is.gd/create.php?format=simple&amp;amp;url="+Ссылка;
 
 ХМЛХТТП = ПолучитьCOMОбъект("", "Microsoft.XMLHTTP");
 ХМЛХТТП.Open("GET", Адрес, Ложь);
 ХМЛХТТП.Send(Null);
 Возврат СокрЛП(ХМЛХТТП.ResponseText);
КонецФункции

3 мар. 2019 г.

Автоподключение vpn Windows 10

Для автоподключения делаем .bat файл с содержимым
rasdial "VpnAddress" UserName UserPassword

А что бы при каждой авторизации впн соединение "поднималось" закинем его в Task Scheduler с такими настройками


7 янв. 2019 г.

Проверить открыта ли форма?


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

CopyPaste Copyright © 2017 - |- Шаблон создан O Pregador - |- Отредактирован myr4ik07