Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )



История благодарностей участнику vbi ::: Спасибо сказали: 72 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
04.11.11, 11:48 1С Документооборот 8
Смотря какие документы. Есть такая конфигурация "Конвертация данных". С помощью ее можно просто настроить правила переноса: устанавливаете какие объекты одной конфигурации переходят в какие объекты другой, а так же реквизиты. После этого с помощью специальных обработок и сформированных правил обмена переносите данные. Поискав в интернете, Вы найдете много написанного об этом.
ip82,
03.11.11, 17:26 Приси записи номенклатуры в наименование добавить код
Сори...
Объект.УстановитьНовыйКод("");

rolleyes.gif

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


&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    Объект.Наименование = Объект.Наименование + Объект.Код;
КонецПроцедуры
Irina_,
03.11.11, 17:05 Непонятная ошибка XDTO
Блин!!! icon_bang.gif наверно опять баги платформы (8.2.14.537)

Так работает:
       СтруктураРеквизитовДокумента = 0;  
       мВалютаРегламентированногоУчета = 0;
       СтруктураРеквизитовДляФормыЦеныВалюты = ПолучитьСтруктуруРеквизитовДляФормыЦеныВалюты(СтруктураРеквизитовДокумента, "Товары", мВалютаРегламентированногоУчета, 0);
       Возврат;


33000000.gif
Vofka,
03.11.11, 16:35 Приси записи номенклатуры в наименование добавить код
Цитата
ПриСоданииНаСервере вызывается даже при открытии существующего элемента....хорошо там вызывать УстановитьНовыйКод ?

Да. Ведь (тем более на сервере) проверить условие нового:

Если Объект.ЭтоНовый() Тогда
     УстановитьНовыйКод("");
КонецЕсли;


Скажете, получилось ли.
Irina_,
03.11.11, 16:11 Приси записи номенклатуры в наименование добавить код
Вызовите
УстановитьНовыйКод(<ПрефиксКода>);
и все. Можна вызвыть при создании на сервере.

При создании на сервере вызываете УстановитьНовыйКод(<ПрефиксКода>);

а ПередЗаписью на клиенте Объект.Наименование = Объект.Наименование + Объект.Код;
Irina_,
03.11.11, 16:04 Приси записи номенклатуры в наименование добавить код
Объект.Наименование = Объект.Наименование + Объект.Код;

так должно работать - только что проверил у себя - работает. При чем на Веб-клиенте! ))
Irina_,
03.11.11, 16:00 Приси записи номенклатуры в наименование добавить код
А "ПередЗаписью"?
Объект.Наименование = Объект.Наименование + Объект.Код;

Кстате, представим что вы записали номенклатуру как надо, потом открываете - и наименование у Вас такое "Товар00001" (с кодом, так ведь?). А теперь если ее еще раз записать, тогда наименование будет такое "Товар0000100001". Нехорошо smile.gif
Irina_,
17.10.11, 10:44 Веб клиент: Не работает печать
Кстате в файловом варианте, после 5-минутного зависания (как и в DB2) имеем такую ошибку:
Цитата
Помилка роботи сеансу
Помилка при виконанні запиту POST до ресурсу /e1cib/moxel:
через:
Сеанс відсутній або вилучений
ID=1cffdd79-a019-4434-a609-ea7ccc1f362e, File=src\SeanceContextBasImpl.cpp(909)


Значит проблема не в DB2...

О! Теперь другая ошибка в файловом варианте:


Кстате после нажатия на кнопку печати строка состояния постоянно пишет следующее:


Проблема решена! Ошибка крылась в платформе 8.2.13.219! В 8.2.14.533 работает нормально!
mister-x,
11.10.11, 15:55 Как программно ввсести на основании документ
Спасибо! ща попробую! Я нашел другую реализацию, более сложную:

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

&НаСервереБезКонтекста
Функция СоздатьЧекККМНаСервере(Основание)
    ЧекККМ = Документы.ЧекККМ_Опт.СоздатьДокумент();
    ЧекККМ.Дата=ТекущаяДата();
    ЧекККМ.Заполнить(Основание);
    АдресДокумента=ПоместитьВоВременноеХранилище(ЧекККМ,Новый УникальныйИдентификатор);
    Возврат АдресДокумента;
КонецФункции


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


Цитата(Vofka @ 11.10.11, 13:38) *
В 8.1 и в 8.2 (толстый клиент) в процедуру ПриПолученииДанных тоже пару раз заходит, этого тоже до сих пор никто объяснить не может dry.gif , поэтому, возможно, стОит смириться...



Цитата(kivals @ 11.10.11, 15:35) *
Неверный сам подход: если созданный объект не нужно записывать (перед открытием формы), то нужно просто открыть форму, указав что вводится объект на основании:
ПараметрыФормы = Новый Структура("Основание", Основание);
ОткрытьФорму("Документ.ЧекККМ_Опт.ФормаОбъекта", ПараметрыФормы);

Спасибо, работает! Работают оба варианта, но я выберу тот что проще! smile.gif
kivals,
07.10.11, 11:49 Как получить значение скрытой колонки?
Я вот уже долго мучаюсь.
Вот есть у меня управляемая форма списка. Получается произвольным запросом. Запрос возвращает много всяких полей. В элементе формы "Список" я добавил несколько колонок, указал источник данных. Некоторые скрыл. Но при активации строки списка мне нужно получить значение скрытой колонки.
Если я создаю колонку, делаю видимость = "Ложь" то программно не могу потом получить значение этой колонки. Как до нее добратся?

Может как-то через текущую строку таблицы формы получить значение из динамического списка?

Отключал пользовательскую видимость, а обычную включал - все равно не достучатся.

Разобрался сам. В конструкторе форм там где отображается динамический список (справа), развернув его, нужно отметить галочками в колонке "Использовать всегда" напротив тех реквизитов, которые нужно, и не обязательно их вставлять в таблицу формы.
Vofka,
28.09.11, 17:24 Перенос регистра бухгалтерии "Хозрасчетный" в идентичную конфигурацию
Был такой случай: у клиента при реструктуризации хозрасчетного затирались все субконто.
Нужно было после реструктуризации перенести все данные из копии вручну. Проблема стала в переносе ссылок между базами, так как ссылка в из одной базы после перемещения через внешнее соединение в другую базу ставала "чужой" в той базе, хоть УникальныйИдентификатор оставался одинаковый.

Проблема решилась функциями : ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр().
Первая преобразует любую ссылку в текстовое представление ссылки, которое передается через внешнее соединение в идентичную базу и преобразуется там в ссылку с помощью второй функции.

Для примера решил выложить обработку, которая успешно переносит все данные регистра бухгалтерии хозрасчетного через внешнее соединение таким способом (опробовано на клиентах).

Обработка запускается на базе, куда нужно перенести данные, и подключается к базе, через внешнее соединение, откуда нужно перенести данные. Вызывает функцию из модуля внешнего соединения подключенной базы, которая возвращает данные (ТЗ с данными хозрасчетного) и в текущей базе замещает все данные регистра полученными из другой базы.

Вообщем в базе, к которой подключается обработка, в модуле внешнего соединения должна быть процедура:

// Процедура в модуле внешнего соединения подключаемой базы:  
        Функция ПолучитьДанныеТаблицыОбъекта() Экспорт  
           Запрос = Новый Запрос;  
           Запрос.Текст = "ВЫБРАТЬ  
           |   *  
           |ИЗ  
           |   РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ХозрасчетныйДвиженияССубконто
           |ГДЕ
           |   ХозрасчетныйДвиженияССубконто.Регистратор = &Регистратор";  
           Запрос.УстановитьПараметр("Регистратор",Документы.ЗакрытиеМесяца.НайтиПоНомеру("ГД000000001",'20110731'));
           ТЗ = Запрос.Выполнить().Выгрузить();  
           ТЗ.Сортировать("Регистратор");  
           ТЗ.Колонки.Добавить("СубконтоДт1Тип");  
           ТЗ.Колонки.Добавить("СубконтоДт2Тип");  
           ТЗ.Колонки.Добавить("СубконтоДт3Тип");  
           //ТЗ.Колонки.Добавить("СубконтоДт4Тип");  
           ТЗ.Колонки.Добавить("СубконтоКт1Тип");  
           ТЗ.Колонки.Добавить("СубконтоКт2Тип");  
           ТЗ.Колонки.Добавить("СубконтоКт3Тип");  
           //ТЗ.Колонки.Добавить("СубконтоКт4Тип");    
           ТЗ.Колонки.Добавить("РегистраторСсылка");  
           ТЗ.Колонки.Добавить("СчетДтСсылка");  
           ТЗ.Колонки.Добавить("СубконтоДт1Ссылка");  
           ТЗ.Колонки.Добавить("СубконтоДт2Ссылка");  
           ТЗ.Колонки.Добавить("СубконтоДт3Ссылка");  
           //ТЗ.Колонки.Добавить("СубконтоДт4Ссылка");  
           ТЗ.Колонки.Добавить("СчетКтСсылка");  
           ТЗ.Колонки.Добавить("СубконтоКт1Ссылка");  
           ТЗ.Колонки.Добавить("СубконтоКт2Ссылка");  
           ТЗ.Колонки.Добавить("СубконтоКт3Ссылка");  
           //ТЗ.Колонки.Добавить("СубконтоКт4Ссылка");  
           ТЗ.Колонки.Добавить("ОрганизацияСсылка");  
           ТЗ.Колонки.Добавить("ВалютаДтСсылка");  
           ТЗ.Колонки.Добавить("ВалютаКтСсылка");  
           ТЗ.Колонки.Добавить("НалоговоеНазначениеДтСсылка");  
           ТЗ.Колонки.Добавить("НалоговоеНазначениеКтСсылка");
           ТЗ.Колонки.Добавить("СчетДополнительныйСсылка");  
           Для Каждого Строка Из ТЗ Цикл  
              Строка.СубконтоДт1Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоДт1);  
              Строка.СубконтоДт2Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоДт2);  
              Строка.СубконтоДт3Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоДт3);  
              //Строка.СубконтоДт4Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоДт4);  
              Строка.СубконтоКт1Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоКт1);  
              Строка.СубконтоКт2Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоКт2);  
              Строка.СубконтоКт3Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоКт3);  
              //Строка.СубконтоКт4Тип = ЗначениеВСтрокуВнутр(Строка.ВидСубконтоКт4);        
              Строка.РегистраторСсылка = ЗначениеВСтрокуВнутр(Строка.Регистратор);  
              Строка.СчетДтСсылка = ЗначениеВСтрокуВнутр(Строка.СчетДт);  
              Строка.СубконтоДт1Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоДт1);  
              Строка.СубконтоДт2Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоДт2);  
              Строка.СубконтоДт3Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоДт3);  
              //Строка.СубконтоДт4Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоДт4);  
              Строка.СчетКтСсылка = ЗначениеВСтрокуВнутр(Строка.СчетКт);  
              Строка.СубконтоКт1Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоКт1);  
              Строка.СубконтоКт2Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоКт2);  
              Строка.СубконтоКт3Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоКт3);  
              //Строка.СубконтоКт4Ссылка = ЗначениеВСтрокуВнутр(Строка.СубконтоКт4);  
              Строка.ОрганизацияСсылка = ЗначениеВСтрокуВнутр(Строка.Организация);  
              Строка.ВалютаДтСсылка = ЗначениеВСтрокуВнутр(Строка.ВалютаДт);  
              Строка.ВалютаКтСсылка = ЗначениеВСтрокуВнутр(Строка.ВалютаКт);  
              Строка.НалоговоеНазначениеДтСсылка = ЗначениеВСтрокуВнутр(Строка.НалоговоеНазначениеДт);  
              Строка.НалоговоеНазначениеКтСсылка = ЗначениеВСтрокуВнутр(Строка.НалоговоеНазначениеКт);  
              Строка.СчетДополнительныйСсылка = ЗначениеВСтрокуВнутр(Строка.СчетДополнительный);    
           КонецЦикла;  
           Возврат(ТЗ);  
        КонецФункции


Как видим в запросе стоит отбор по регистратору. Таким образом перетянутся данные только одного документа. Если убрать отбор - перетянутся все данные.

А это модуль формы обработки, которая запускается в базе, куда нужно перенести данные:

Перем ТекПоказатьСостояние;  
        Процедура КнопкаВыполнитьНажатие(Кнопка)  
            
           ПоказатьСостояние("Попытка подключения...");  
           Соединение = Новый COMObject("V82.COMConnector");  
            
           База = Соединение.Connect("Srvr=""server1c"";Ref=""GOR_B"";Usr=""Логин"";Pwd=""36787463""");         // Для серверной базы
         //    База = Соединение.Connect("File=""D:\Bases\GOR_B"";Usr=""Логин"";Pwd=""36787463""");  // Для файловой базы
            
           ПоказатьСостояние("Выполняется получение данных из удаленной базы...");  
           ТЗ = База.ПолучитьДанныеТаблицыОбъекта();  
           КолВсего = ТЗ.Количество();  
           ПоказатьСостояние("Выполняется заполнене данных на этой базе...");  
            
           Итератор = 1;  
            
           ПервыйРаз = Истина;  
           ТекРегистратор = Неопределено;  
           НаборЗаписей = Неопределено;  
           Для Каждого Выборка Из ТЗ Цикл        
              Если ЗначениеИзСтрокиВнутр(Выборка.РегистраторСсылка) <> ТекРегистратор Тогда  
                 Если ПервыйРаз Тогда  
                    ПервыйРаз = Ложь;  
                 Иначе          
                    Попытка  
                       НаборЗаписей.Записать();  
                    Исключение  
                       Сообщить("Не удалось присвоить регистратора: "+ТекРегистратор);  
                       Возврат;  
                    КонецПопытки  
                 КонецЕсли;  
                 ТекРегистратор = ЗначениеИзСтрокиВнутр(Выборка.РегистраторСсылка);  
                 НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();  
                 НаборЗаписей.Отбор.Регистратор.Установить(ТекРегистратор);
                 //НаборЗаписей.Записать();
              КонецЕсли;  
              ПоказатьСостояние("Выполняется заполнене данных "+Окр(Итератор*100 /КолВсего,6)+" %");  
              Итератор = Итератор + 1;  
              Запись = НаборЗаписей.Добавить();  
              ЗаполнитьЗначенияСвойств(Запись,Выборка);  
              Запись.Регистратор = ЗначениеИзСтрокиВнутр(Выборка.РегистраторСсылка);  
              Запись.СчетДт = ЗначениеИзСтрокиВнутр(Выборка.СчетДтСсылка);  
              Запись.СубконтоДт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт1Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт1Ссылка);  
              Запись.СубконтоДт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт2Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт2Ссылка);  
              Запись.СубконтоДт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт3Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт3Ссылка);  
              //Запись.СубконтоДт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт4Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоДт4Ссылка);  
              Запись.СчетКт = ЗначениеИзСтрокиВнутр(Выборка.СчетКтСсылка);  
              Запись.СубконтоКт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт1Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт1Ссылка);  
              Запись.СубконтоКт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт2Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт2Ссылка);  
              Запись.СубконтоКт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт3Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт3Ссылка);  
              //Запись.СубконтоКт[ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт4Тип)] = ЗначениеИзСтрокиВнутр(Выборка.СубконтоКт4Ссылка);  
              Запись.Организация = ЗначениеИзСтрокиВнутр(Выборка.ОрганизацияСсылка);  
              Запись.ВалютаДт = ЗначениеИзСтрокиВнутр(Выборка.ВалютаДтСсылка);  
              Запись.ВалютаКт = ЗначениеИзСтрокиВнутр(Выборка.ВалютаКтСсылка);
              Запись.НалоговоеНазначениеДт = ЗначениеИзСтрокиВнутр(Выборка.НалоговоеНазначениеДтСсылка);  
              Запись.НалоговоеНазначениеКт = ЗначениеИзСтрокиВнутр(Выборка.НалоговоеНазначениеКтСсылка);
              Запись.СчетДополнительный = ЗначениеИзСтрокиВнутр(Выборка.СчетДополнительныйСсылка);    
           КонецЦикла;  
           НаборЗаписей.Записать();  
            
        КонецПроцедуры  
          
        Процедура ПоказатьСостояние(Текст)  
           ТекПоказатьСостояние = Текст;  
           Состояние(Текст);  
        КонецПроцедуры  
          
        Процедура ОбновлениеОтображения()  
           Состояние(ТекПоказатьСостояние);  
      
       КонецПроцедуры


Конечно при нажатии на кнопку "Выполнить" запускается процедура "КнопкаВыполнитьНажатие".

А это, собственно, сама обработка.
... может кому будет полезно))

Обновлено 29.03.2012 в связи с появлением налогового назначения. Адаптировано под бухгалтерию для Украины. Для УТП следует просто раскомментировать четвертые субконто в коде smile.gif
Batchir, HaHaTuSka, vadimbazylev, Vofka,
26.09.11, 15:53 Глобальные переменные общего модуля
Есть еще один очень хитрый вариант, если данные меняются не часто: Использовать свойство внешнего модуля "Повторное использование возвращаемых значений" (Повторне використання значень, що повертаються).
1. Создаете новый общий модуль
2. Ставите галку "Повторное использование возвращаемых значений"
3. Пишите функцию, которая Вам возвращает Ваши труднособираемые данные в этом модуле
4. Функция обязательно должна иметь параметр (например число. Параметр не обязательно использовать внутри функции)

Например у Вас функция:
 Функция ПолучитьСложныеДанные(КакойТоПараметр)

...

// Нигде в функции "КакойТоПараметр" не встречается, но функция путем запросов возвращает данные
КонецФункции


Далее дело обстоит так: когда Вы вызываете функцию и например передаете число или строку:

Результат = ПолучитьСложныеДанные(5);


Функция проведет сложные расчеты и вернет Вам результат. Но если вы ее вызовите снова:

Результат = ПолучитьСложныеДанные(5);


Функция вернет тот же результат, но в этот раз не будет проводить расчетов, а вернет сразу результат, полученный в предыдущий раз.

Если теперь вызвать
Результат = ПолучитьСложныеДанные(6);


функция опять проведет расчеты и вернет некий (может и другой результат)

Если снова вызвать
Результат = ПолучитьСложныеДанные(6);
- тот же результат но без вычислений
Результат = ПолучитьСложныеДанные(5);
- результат полученный в первый раз тоже без вычислений.

И все это делает галочка в модуле "Повторное использование возвращаемых значений".

Честно говоря я не тестировал это все, но теоретически - должно работать smile.gif
bolobol,
26.09.11, 9:01 Глобальные переменные общего модуля
Цитата(bolobol @ 25.09.11, 20:57) *
Тогда, я не понимаю, что нужно установить, чтобы общий модуль стал модулем обычного приложения?, и мог использовать глобальные переменные.


Общий модуль не может быть модулем обычного приложения. Модуль обычного приложения - это, так сказать, глобальный модуль. В нем выполняются процедуры при запуске системы, подключаются обработчики ожидания и т. д. - тоесть выполняются такие глобальные задачи. Я даже не вижу смысла использовать там какие-то переменные. Есть модуль управляемого приложения - этот модуль "заменяет" модуль обычного приложения, когда 1С запускается в управляемом режиме. Есть модуль внешнего соединения - экспортные процедуры в этом модуле доступны при подключении к даной базе из другой базы.

Если все уж так плохо с получением данных из регистров, можно воспользоватся "СохранитьЗначение", "ВосстановитьЗначение". Но я бы занялся именно оптимизацией получения данных из регистров smile.gif
bolobol,
23.09.11, 15:16 Как передать табличные данные в форму обработки
Я на клиенте получаю форму обработки, передаю в нее параметры:
ФормаПечатиЧекаККМ = ПолучитьФорму("Обработка.ПечатьККМ.Форма.ФормаУправляемая",СтруктураПараметровФормы);


Мне вот в этой структуре СтруктураПараметровФормы нужно еще передать таблицу с данными типа "ДанныеФормыКоллекция". Но среди доступных типов параметров нет такого типа, потому как параметр я эту таблицу передать немогу. Пробую на сервере

ФормаПечатиЧекаККМ.Объект.ТаблицаТоваров.Загрузить(ТаблицаТоваровККМ.Выгрузить());
пишет ошибку:
Цитата
{МодульУправляемогоПриложения(875)}: Помилка при встановленні значення атрибуту контексту (ТаблицаТоваров)
УправляемоеПриложение.ЗагрузитьТаблицуТоваров(ФормаПечатиЧекаККМ.Объект.ТаблицаТ
оваров,ТаблицаТоваровККМ);
через:
Неможна змінювати поле, яке містить об’єкт даних форми


Как можно в открытую форму передать табличные данные?


ВебКлиент

Пытаюсь передать в серверную процедуру параметр типа "УправляемаяФорма" - пишет
Цитата
Помилка відображення типів:
Відсутнє відображення для типу 'УправляемаяФорма'


хотя в синтаксис-помощьнике для этого типа:
Цитата
Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент.


...может потому что серверная процедура находится в общем модуле?

Может сделать список значений, состоящий из списков значений и не парится, но это будет такое извращение... dead.gif

Разобрался сам smile.gif
Вообщем ФормаПечатиЧекаККМ - это у нас только-что полученная форма обработки. У обработки этой есть табличная часть "ТаблицаТоваров". Есть еще "ТаблицаТоваровККМ" типа ДанныеФормыКоллекция.
Нужно ТаблицаТоваровККМ загрузить в табличную часть ТаблицаТоваров обработки, форму которой мы получили.

Делается все двумя строчками:
ПеремДанныеФормы = ОбщийМодульСерверный.ЗагрузитьТабличнуюЧастьВФорму(ФормаПечатиЧекаККМ.Объект,"ТаблицаТоваров",ТаблицаТоваровККМ);
КопироватьДанныеФормы(ПеремДанныеФормы, ФормаПечатиЧекаККМ.Объект);


Функция общего модуля ЗагрузитьТабличнуюЧастьВФорму (выполняется на сервере)
Функция ЗагрузитьТабличнуюЧастьВФорму(Знач ОбъектПриемник,Знач ИмяТаблицыПриемник,Знач ТаблицаИсточник) Экспорт
    ОбъектПриемник[ИмяТаблицыПриемник].Загрузить(ТаблицаИсточник.Выгрузить());
    Возврат ОбъектПриемник;
КонецФункции
shurik_shurik, Vofka,

2 страниц V  < 1 2
RSS Текстовая версия Сейчас: 18.04.24, 9:20
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!