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

Хранилище

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

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



> Формування і відкриття документа (його форми) із іншого документа          
mister-x Подменю пользователя
сообщение 12.03.11, 15:28
Сообщение #1

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Ітак, є док-и ПродажаТоваров и ЗаявкаНаТранспорт. ЗаявкаНаТранспорт формується на основі ПродажаТоваров. Причому, якщо сума в ПродажаТоваров >= 1000 є можливість (через запитання) формувати док-т ЗаявкаНаТранспорт.

Код в док-ті ПродажаТоваров:


&НаСервере
Функция ЗаявкаНаТранспорт()
    
    НовДок = Документы.ЗаявкаНаТранспорт.СоздатьДокумент();
    //НовДок.ДатаДоставки = ДатаЗаявки;

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

    //    СтрДок = НовДок.Товары.ДобавитьСтроку();

    //    СтрДок.Номенклатура     = ТекСтрока.Номенклатура;

    //    СтрДок.Серия             = ТекСтрока.Серия;

    //    СтрДок.ЕдиницаИзмерения = ТекСтрока.ЕдиницаИзмерения;

    //    СтрДок.Цена                = ТекСтрока.Цена;

    //    СтрДок.Количество        = ТекСтрока.Количество;

    //    СтрДок.Сумма            = ТекСтрока.Сумма;

    //КонецЦикла;

    
    НовДок.Записать();
    ФормаЗаявки = НовДок.ПолучитьФорму("Документ.ЗаявкаНаТранспорт.Форма.ФормаДокумента");
    ФормаЗаявки.Открыть();
    
    Возврат 1;
        
КонецФункции


&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    
    Отказ = Ложь;  
    Если Объект.Товары.Итог("Сумма") > 1000 Тогда        
        Отказ = Истина;
        Если Вопрос("Есть возможность бесплатной доставки - документ ""Заявка на транспорт""!", РежимДиалогаВопрос.ДаНетОтмена) =
            КодВозвратаДиалога.Да Тогда
            //ВвДата = ТекущаяДата();

            //Подсказка = "Введите дату и время доставки товара";

            //ЧастьДаты = ЧастиДаты.ДатаВремя;

            //Если ВвестиДату(ВвДата, Подсказка, ЧастьДаты) Тогда                        

            //    ЗаявкаНаТранспорт(ВвДата);                

            //Иначе

                //ЗаявкаНаТранспорт(ТекущаяДата());

                ЗаявкаНаТранспорт();
                //ФормаЗаявки = ПолучитьФорму("Документ.ЗаявкаНаТранспорт.Форма.ФормаДокумента");

                //ФормаЗаявки = Док.ПолучитьФорму();

                
                Отказ = Ложь;
            //КонецЕсли;        

        Иначе
            Отказ = Ложь;        
        КонецЕсли;
    Иначе
        Отказ = Ложь;
    КонецЕсли;
    
КонецПроцедуры


В модуле док-у ЗаявкаНаТранспорт - код:

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
    //{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ

    // Данный фрагмент построен конструктором.

    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

    Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ПродажаТоваров") Тогда
        // Заполнение шапки

        СтандартнаяОбработка = Ложь;
        //Контрагент = ДанныеЗаполнения.Контрагент;

        //СвязьИзПродажаТоваров = ДанныеЗаполнения.Ссылка;

        
    КонецЕсли;
    //}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ

КонецПроцедуры


Чомусь при відкритті док-у ЗаявкаНаТранспорт (форми), із док-у ПродажаТоваров (програмно) не видно заповнених реквізитів (Контрагент,СвязьИзПродажаТоваров в відлагоджувачі вони заповненні). Хоча при перевідкритті док-у ЗаявкаНаТранспорт, всі реквізити заповненні. Підозрюю, що при програмному відкритті док-у ЗаявкаНаТранспорт дані із серверу ще не попали на клієнт.
Як бути? Як відкривати форму в цьому випадку?

І взагалі - відкрити форму вже існуючого об'єкту?

Дякую за відгуки.

logist Подменю пользователя
сообщение 12.03.11, 15:55
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Пусть функция возвращает ссылку на созданный документ, который затем и открывается.
Если нужно через "Основание" то обозначьте в свойствах документа что на основании чего создается, и в обработке заполнения заявки пропишите заполнение необходимых полей.

p.s. такое чувство что мы эту задачу будем решать вечно...


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: mister-x,

mister-x Подменю пользователя
сообщение 12.03.11, 16:04
Сообщение #3

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Цитата
Если нужно через "Основание" то обозначьте в свойствах документа что на основании чего создается, и в обработке заполнения заявки пропишите заполнение необходимых полей.

дякую, поки потрібно із ПродажаТоваров створювати і відкривати ЗаявкаНаТранспорт.

mister-x Подменю пользователя
сообщение 12.03.11, 16:12
Сообщение #4

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

ПродажаТоваров:
&НаСервере
Функция ЗаявкаНаТранспорт()
    
    НовДок = Документы.ЗаявкаНаТранспорт.СоздатьДокумент();
    //НовДок.ДатаДоставки = ДатаЗаявки;
    НовДок.Дата = ТекущаяДата();
    НовДок.Контрагент = Объект.Контрагент;
    
    Для каждого Стр Из Объект.Контрагент.КонтактныеЛица Цикл
        Тел = Стр.Телефон;
        Контакт = Стр.Контакт;        
        Прервать;    
    КонецЦикла;       
    НовДок.КонтактноеЛицо = Контакт;
    НовДок.Телефон = Тел;
    
    НовДок.СвязьИзПродажаТоваров = Объект.Ссылка;
    
    
    //Для Каждого ТекСтрока Из Товары Цикл
    //    СтрДок = НовДок.Товары.ДобавитьСтроку();
    //    СтрДок.Номенклатура     = ТекСтрока.Номенклатура;
    //    СтрДок.Серия             = ТекСтрока.Серия;
    //    СтрДок.ЕдиницаИзмерения = ТекСтрока.ЕдиницаИзмерения;
    //    СтрДок.Цена                = ТекСтрока.Цена;
    //    СтрДок.Количество        = ТекСтрока.Количество;
    //    СтрДок.Сумма            = ТекСтрока.Сумма;
    //КонецЦикла;
    
    НовДок.Записать();
    
    Возврат НовДок;
        
КонецФункции

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


&НаКлиенте
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
    
    Отказ = Ложь;  
    Если Объект.Товары.Итог("Сумма") > 1000 Тогда        
        Отказ = Истина;
        Если Вопрос("Есть возможность бесплатной доставки - документ ""Заявка на транспорт""!", РежимДиалогаВопрос.ДаНетОтмена) =
            КодВозвратаДиалога.Да Тогда
            //ВвДата = ТекущаяДата();
            //Подсказка = "Введите дату и время доставки товара";
            //ЧастьДаты = ЧастиДаты.ДатаВремя;
            //Если ВвестиДату(ВвДата, Подсказка, ЧастьДаты) Тогда                        
            //    ЗаявкаНаТранспорт(ВвДата);                
            //Иначе
                //ЗаявкаНаТранспорт(ТекущаяДата());
                Док = ЗаявкаНаТранспорт();
                //ФормаЗаявки = НовДок.ПолучитьФорму("Документ.ЗаявкаНаТранспорт.Форма.ФормаДокумента");
                //ФормаЗаявки.Открыть();
                ФормаЗаявки = Док.ПолучитьФорму("Документ.ЗаявкаНаТранспорт.Форма.ФормаДокумента");
                ФормаЗаявки.Открыть();
                
                Отказ = Ложь;
            //КонецЕсли;        
        Иначе
            Отказ = Ложь;        
        КонецЕсли;
    Иначе
        Отказ = Ложь;
    КонецЕсли;
    
КонецПроцедуры

Цікавить - чи я правильно отримую форму уже записаного об"єкта-документа:
ФормаЗаявки = Док.ПолучитьФорму("Документ.ЗаявкаНаТранспорт.Форма.ФормаДокумента");

?

mister-x Подменю пользователя
сообщение 12.03.11, 16:13
Сообщение #5

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

функція вертає об"єкт-документ

mister-x Подменю пользователя
сообщение 12.03.11, 16:18
Сообщение #6

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

через лінк на док - все ок
...
Возврат НовДок.Ссылка;
...
....

Док = ЗаявкаНаТранспорт();
                //ФормаЗаявки = НовДок.ПолучитьФорму("Документ.ЗаявкаНаТранспорт.Форма.ФормаДокумента");
                //ФормаЗаявки.Открыть();
                ФормаЗаявки = Док.ПолучитьФорму(); //ПолучитьФорму("Документ.ЗаявкаНаТранспорт.Форма.ФормаДокумента");
                ФормаЗаявки.Открыть();
...

mister-x Подменю пользователя
сообщение 12.03.11, 16:19
Сообщение #7

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

а от конструкцію:
ПолучитьФорму("Документ.ЗаявкаНаТранспорт.Форма.ФормаДокумента")

у яких випадках необхідно використовувати?

logist Подменю пользователя
сообщение 12.03.11, 16:28
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(mister-x @ 12.03.11, 16:19) *
а от конструкцію:
ПолучитьФорму("Документ.ЗаявкаНаТранспорт.Форма.ФормаДокумента")

у яких випадках необхідно використовувати?

Когда нужно явно указать форму которая не является основной.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

mister-x Подменю пользователя
сообщение 12.03.11, 17:35
Сообщение #9

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Яким чином її використовувати для вибраного об'єкту:
СсылкаНаОбъект.ПолучитьФорму("ПутьКОбъекту.Форма.КонкретнаяФорма")

чи
ПолучитьФорму("ПутьКОбъекту.Форма.КонкретнаяФорма")

без СсылкаНаОбъект?

Vofka Подменю пользователя
сообщение 12.03.11, 17:46
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Без ссылок. Форма одна и та же для всех ссылок.

Спасибо сказали: mister-x,

mister-x Подменю пользователя
сообщение 12.03.11, 17:49
Сообщение #11

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

якщо вертати у функції об"єкт-документ, то відкривається форма, яку снегерила 1С-ка сама на основі даних об"єкту - ось при такому коді:
...
Возврат НовДок;
...
....

Док = ЗаявкаНаТранспорт();
ФормаЗаявки = Док.ПолучитьФорму();
ФормаЗаявки.Открыть();
...

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

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