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

Хранилище

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

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



2 страниц V   1 2 >

>  Как запустить отчет с пользовательской настройкой?
Vzonder
Отправлено: 22.02.17, 1:25


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Flexy @ Вчера, 13:05 * ,







  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #123261 · Ответов: 4 · Просмотров: 1608
 

>  Как запустить отчет с пользовательской настройкой?
Vzonder
Отправлено: 20.02.17, 12:47


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


1С 8.2 УТ 10.3

Имеется Отчет:
АнализЗаказовПокупателейЭкс

У него несколько пользовательских настроек. Предположим:
Настройка_01
Настройка_02
И т.д.

Создаю кнопки вызова отчета, из необходимых форм, по смыслу.
Процедура КнопкаОтчетаЭксНажатие(Элемент)

    АнализЗаказовПокупателейЭкс = Отчеты.АнализЗаказовПокупателейЭкс.Создать();
    АнализЗаказаФорма = АнализЗаказовПокупателейЭкс.ПолучитьФорму();
    АнализЗаказаФорма.ПолеВвода2 = Ссылка;
    АнализЗаказаФорма.Открыть();

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


Все прекрасно вызывается и работает.

Подскажите, пожалуйста, как вызвать форму с выбранной пользовательской настройкой?
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #123159 · Ответов: 4 · Просмотров: 1608
 

>  Отбор по значению в текущей колонке со Значениями реквизита из родительского документа.
Vzonder
Отправлено: 09.02.17, 20:44


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


logist @ Сегодня, 21:16 * ,
Вот теперь понимаю, что Вы меня неправильно поняли...
Речь идет не о реквизите документа РеализацияТоваровУслуг.
А именно о Реквизите "Родительского" Документа ЗаказПокупателя:

ОформлениеСтроки.Ячейки.ЭтапыПродажи.УстановитьТекст(ДанныеСтроки.Сделка.ЭтапыПродажи);
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122804 · Ответов: 7 · Просмотров: 5267
 

>  Отбор по значению в текущей колонке со Значениями реквизита из родительского документа.
Vzonder
Отправлено: 09.02.17, 20:09


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Скорее всего я чего-то не понимаю.

Можно поподробнее?
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122802 · Ответов: 7 · Просмотров: 5267
 

>  Отбор по значению в текущей колонке со Значениями реквизита из родительского документа.
Vzonder
Отправлено: 09.02.17, 18:54


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


logist @ Сегодня, 19:44 * ,
Я новичок.
Правильно я понимаю - реквизит списка - это реквизит документа?
Если да, то так-то работает...
Если нет, подскажите, как его создать?
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122797 · Ответов: 7 · Просмотров: 5267
 

>  Отбор по значению в текущей колонке со Значениями реквизита из родительского документа.
Vzonder
Отправлено: 09.02.17, 18:12


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


1С 8.2 УП 10.3

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

Возникла необходимость вывести этот реквизит в Форму Списка Документа РеализацияТоваровУслуг.
Вывел так:
Если ЗначениеЗаполнено(ДанныеСтроки.Сделка) И ТипЗнч(ДанныеСтроки.Сделка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда

        ОформлениеСтроки.Ячейки.ЭтапыПродажи.ОтображатьКартинку = Ложь;
        ОформлениеСтроки.Ячейки.ЭтапыПродажи.ОтображатьТекст    = Истина;
        ОформлениеСтроки.Ячейки.ЭтапыПродажи.ОтображатьФлажок   = Ложь;
        ОформлениеСтроки.Ячейки.ЭтапыПродажи.УстановитьТекст(ДанныеСтроки.Сделка.ЭтапыПродажи);
          КонецЕсли;

Все отлично работает, вот только ни аппаратный, ни программный отбор не работает.
Помогите, пожалуйста допилить данную задумку.


  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122795 · Ответов: 7 · Просмотров: 5267
 

>  Как отобразить кортику в ячейки формы списка? 1С 8.2 УТ 10.3
Vzonder
Отправлено: 31.01.17, 22:09


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Сам разобрался!)

В процедуре Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

        
        ОформлениеСтроки.Ячейки.СтатусДоговора.ОтображатьКартинку = Истина;
        ОформлениеСтроки.Ячейки.СтатусДоговора.ОтображатьТекст    = Ложь;
        ОформлениеСтроки.Ячейки.СтатусДоговора.ОтображатьФлажок   = Ложь;
        
        
        Если ДанныеСтроки.Ссылка.СтатусДоговора = "Готов" Тогда
        
        ОформлениеСтроки.Ячейки.СтатусДоговора.Картинка = БиблиотекаКартинок.Картинка1;
        
    ИначеЕсли  ДанныеСтроки.Ссылка.СтатусДоговора = "Нужен" Тогда
    
        ОформлениеСтроки.Ячейки.СтатусДоговора.Картинка = БиблиотекаКартинок.Картинка2;
    Иначе
        ОформлениеСтроки.Ячейки.СтатусДоговора.Картинка = БиблиотекаКартинок.Картинка3;
  КонецЕсли;

  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122403 · Ответов: 2 · Просмотров: 1997
 

>  Как отобразить кортику в ячейки формы списка? 1С 8.2 УТ 10.3
Vzonder
Отправлено: 31.01.17, 20:44


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Vzonder @ Сегодня, 20:03 * ,
Разобрался как менять цвет в колонке.

В табличном поле включаю процедуру СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

В ней:

Если ДанныеСтроки.Ссылка.ДокументГотов = Истина
    Тогда
    ОформлениеСтроки.Ячейки.ДокументГотов.ЦветФона = Новый Цвет(255, 78, 170);
Иначе
ОформлениеСтроки.Ячейки.ДокументГотов.ЦветФона = Новый Цвет(65, 238, 255);

КонецЕсли;


Все отлично работает.

А вот так:

ОформлениеСтроки.Ячейки.СтатусДоговора.Картинка = БиблиотекаКартинок.КартинкаОплата;

Не работает(((
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122400 · Ответов: 2 · Просмотров: 1997
 

>  Как отобразить кортику в ячейки формы списка? 1С 8.2 УТ 10.3
Vzonder
Отправлено: 31.01.17, 19:03


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Хочется вывести картинку в ячейку строки ФормыСписка Документа, которая при изменения значения в реквизите, будет меняться на другую или третью..
Но пока и одну вывести не могу.

В процедуру СписокПриПолученииДанных(Элемент, ОформленияСтрок) присал следующий код:
    Для Каждого ОформлениеСтроки ИЗ ОформленияСтрок Цикл
        
        ОформлениеСтроки.Ячейки.СтатусОплаты.ОтображатьКартинку = Истина;
        ОформлениеСтроки.Ячейки.СтатусОплаты.ОтображатьТекст    = Ложь;
        ОформлениеСтроки.Ячейки.СтатусОплаты.ОтображатьФлажок   = Ложь;
        ОформлениеСтроки.Ячейки.СтатусОплаты.Картинка = БиблиотекаКартинок.КартинкаОплата;

    КонецЦикла;

Однако картинка не выводится(((
Научите, пожалуйста, как правильно выводить?
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122398 · Ответов: 2 · Просмотров: 1997
 

>  Как заставить Общий модуль УправлениеЭлектроннойПочтой вставлять электронный адрес Контрагента из документа?
Vzonder
Отправлено: 27.01.17, 21:50


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Vzonder @ Сегодня, 21:17 * ,

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

И соответственно:
        спКипии = Новый СписокЗначений;    
        спКипии.Добавить(Копии, "Обязательная Копия обратно!!!");
        
        СтруктураНовогоПисьма.Вставить("Копии", спКипии);

Все работает великолепно, и тут выясняется, что счета, из ЗаказПокупателя - прекрасно проставляет
А Торг12 из РеализацияТоваровУслуг - нет ((((
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122266 · Ответов: 16 · Просмотров: 3923
 

>  Как заставить Общий модуль УправлениеЭлектроннойПочтой вставлять электронный адрес Контрагента из документа?
Vzonder
Отправлено: 27.01.17, 20:17


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Vzonder @ Сегодня, 20:08 * ,


нашел как вручную поставить:

Копии = "адрес@мыло.ru";


спКипии = Новый СписокЗначений;
спКипии.Добавить(Копии, "Копия");
СтруктураНовогоПисьма.Вставить("Копии", спКипии);

Сейчас ищу как одрес организации вставить.
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122265 · Ответов: 16 · Просмотров: 3923
 

>  Как заставить Общий модуль УправлениеЭлектроннойПочтой вставлять электронный адрес Контрагента из документа?
Vzonder
Отправлено: 27.01.17, 19:08


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Vzonder @ Сегодня, 18:08 * ,



Подскажите, пожалуйста, а как добавить в отправление копию письма.

С Адрес ом и Темой - все понятно

Появилась необходимость отправлять письмо самому себе, где оно будет перемещаться в отправленное правилами обработки почты.

Т.к. POP3 не оставляет отправленных сообщений на почтовом сервере.

Дотаточно будет Копия = "";

Поискал в инете, и удивился, нет нигде инфо...

А как вписать вписать код, для Outlook в мой файл, для передачи файла - не разобрался.
        Outlook=Новый COMОбъект("Outlook.Application");
        ТипФайла="XLS";
        Письмо=Outlook.CreateItem(0);
        Письмо.Subject=ИмяФайлаВложения;
        Письмо.Body=ИмяФайлаВложения;
        ФайлаВложения=КаталогВременныхФайлов()+СтрЗаменить(ИмяФайлаВложения, ".", " ")+"."+ТипФайла;
        Документ.Записать(ФайлаВложения,ТипФайла);
        Письмо.Attachments.Add(ФайлаВложения);
        Попытка
            Письмо.Display();
        Исключение
        КонецПопытки;

Ковырялся, но дальше чем создать письмо не продвинулся...

Решил, просто посылать копию, только не вручную, думочки будут упускать этот момент....

Vzonder @ Сегодня, 19:54 * ,
Очипятка по Фрейду: Дамочки. ))))
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122264 · Ответов: 16 · Просмотров: 3923
 

>  Как заставить Общий модуль УправлениеЭлектроннойПочтой вставлять электронный адрес Контрагента из документа?
Vzonder
Отправлено: 27.01.17, 17:08


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Flexy @ Сегодня, 17:46 * ,
friends.gif 12201689.gif 47067070.gif 32542460.gif

СПАСИБО! СПАСИБО! СПАСИБО! СПАСИБО! СПАСИБО! СПАСИБО! СПАСИБО! СПАСИБО! СПАСИБО! СПАСИБО! СПАСИБО!

Все отлично заработало!!!
УРА.
Простите меня за тупость.
Я новичок нулевого уровня...
Конфигуратор открыл впервые в конце декабря.
Пришлось, кризис и сокращения и вот я поневоле.
пытаюсь облегчить жизнь сотрудникам в отделе...
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122261 · Ответов: 16 · Просмотров: 3923
 

>  Как заставить Общий модуль УправлениеЭлектроннойПочтой вставлять электронный адрес Контрагента из документа?
Vzonder
Отправлено: 27.01.17, 16:35


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Flexy @ Сегодня, 17:20 * ,

{ОбщаяФорма.ПечатьДокументов.Форма(120,17)}: Процедура или функция с указанным именем не определена (ОпределитьАдресПолучателя)
Адрес = <<?>>ОпределитьАдресПолучателя(Объект.Контрагент); (Проверка: Толстый клиент (обычное приложение))

why.gif
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122258 · Ответов: 16 · Просмотров: 3923
 

>  Как заставить Общий модуль УправлениеЭлектроннойПочтой вставлять электронный адрес Контрагента из документа?
Vzonder
Отправлено: 27.01.17, 15:57


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Flexy @ Сегодня, 15:43 * ,
Реквизитов у формы только один - ЧислоКопий
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122253 · Ответов: 16 · Просмотров: 3923
 

>  Как заставить Общий модуль УправлениеЭлектроннойПочтой вставлять электронный адрес Контрагента из документа?
Vzonder
Отправлено: 27.01.17, 14:31


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Flexy @ Сегодня, 12:01 * ,

Насколько я могу понимать, наименование контрагента имеется в табличной части, в представлении.
Возможно его от туда вытащить?
В макете он выражен так: <ТекстПокупатель> <ПредставлениеПолучателя>
На всякий - прилагаю весть код:





///////////////////////////////////////////////////////////////////////////////
// ПЕРЕМЕННЫЕ МОДУЛЯ
Перем Объект Экспорт;                        // Объект, который печатается
Перем ОбъектПредставление Экспорт;            // Представление объекта. Используется для формирования заголовка, имен сохраняемых файлов и т.п. Если не задано, то будет построено по "Объект"
Перем ДополнительноКПредставлению Экспорт;    // Строка, которая будет выведена дополнительно в конец заголовка формы
Перем Принтеры;                                // Список установленных в системе принтеров
Перем ИмяТекПринтера;                        // Имя принтера (как оно установлено в системе) на который будет осуществляться вывод


////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ

Функция ПолучитьПредставление(Объект)
    
    //+CRM
    Если Объект = Неопределено Тогда
        Возврат "";
    КонецЕсли;
    //-CRM
    
    // Определим тип переданного нам объекта (для всех "объектов" получим ссылки на них)
    Попытка
        ТипЗнчОбъекта = ТипЗнч(Объект.Ссылка);
    Исключение
        ТипЗнчОбъекта = ТипЗнч(Объект);
    КонецПопытки;
    
    // Определим представление в зависмоти от типа переданного нам объекта
    Представление = "";
    Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнчОбъекта) Тогда
        Представление = дкПолучитьПредставление(Объект);
    ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗнчОбъекта) Тогда
        Представление = Объект.Метаданные().Синоним;
    КонецЕсли;
    
    Возврат Представление;
КонецФункции

// Приводит произвольную строку к идентификатору, который затем можно использовать как ключ структуры
// Преобразование выполняется разрушающим способом (обратное преобразование невозможно)
Функция обСтрокуКID(Стр) Экспорт
    Ст=обСтрокаПоМаске(Стр,"_0123456789
                           |ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
                           |АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя");
    Возврат ?(Найти("0123456789",Лев(Ст,1))>0,"_"+Ст,Ст);
КонецФункции // обСтрокуКID()

// Функция возвращает строку символов, полученную из исходной <Стр> GOAN
// заменой всех символов, не входящих в <Маска> на символ <Симв>
Функция обСтрокаПоМаске(Стр,Маска="",Симв="") Экспорт
    Ст=""; Если ПустаяСтрока(Маска) Тогда Возврат Ст; КонецЕсли;
    Для Сч=1 По СтрДлина(Стр) Цикл
        Сим=Сред(Стр,Сч,1);
        Если Найти(Маска,Сим)>0 Тогда Ст=Ст+Сим; Иначе Ст=Ст+Симв; КонецЕсли;
    КонецЦикла;
    Возврат Ст;
КонецФункции // обСтрокаПоМаске

// Возвращает представление для документа
// Параметры
// ЭтотОбъект - <ДокументСсылка> или <ДокументОбъект>
// АльтернативноеНазвание - Строка, используется, если хотим заменить синоним документа
// Возвращаемое значение:
// Строка - Строка представления документа
Функция дкПолучитьПредставление(ЭтотОбъект, АльтернативноеНазвание = "") Экспорт
    Попытка
        ТекстПредставления=?(ПустаяСтрока(АльтернативноеНазвание), ЭтотОбъект.Метаданные().Синоним, АльтернативноеНазвание)+" № "+СокрЛП(ЭтотОбъект.Номер)+" от "+Формат(ЭтотОбъект.Дата,"ДФ=dd.MM.yyyy");
    Исключение
        ТекстПредставления="Неправильный тип объекта!";
    КонецПопытки;
    Возврат ТекстПредставления;
КонецФункции // ПолучитьПредставление()

////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ДЕЙСТВИЯ КОМАНДНЫХ ПАНЕЛЕЙ ФОРМЫ

// Процедура отправляет отчет по электронной почте в виде табличного документа mxl
Процедура ДействияФормыОтправитьПоEmail(Кнопка)
    РасширениеФайла = "";
    ТипПересылаемогоФайла = Неопределено;
    Если Кнопка.Имя = "ОтправитьКакMXL" Тогда
        ТипПересылаемогоФайла = ТипФайлаТабличногоДокумента.MXL;
        РасширениеФайла = ".mxl";
    ИначеЕсли Кнопка.Имя = "ОтправитьКакHTML" Тогда
        ТипПересылаемогоФайла = ТипФайлаТабличногоДокумента.HTML;
        РасширениеФайла = ".html";
    ИначеЕсли Кнопка.Имя = "ОтправитьКакXLS" Тогда
        ТипПересылаемогоФайла = ТипФайлаТабличногоДокумента.XLS97;
        РасширениеФайла = ".xls";
    ИначеЕсли Кнопка.Имя = "ОтправитьКакPDF" Тогда
        ТипПересылаемогоФайла = ТипФайлаТабличногоДокумента.PDF;
        РасширениеФайла = ".pdf";
    Иначе
        Возврат;
    КонецЕсли;
    НаименованиеПечатнойФормы = СтрЗаменить(ОбъектПредставление,".","_");
    
    // сохраним ПФ во временный каталог
    ИмяФайлаСообщения = КаталогВременныхФайлов() + НаименованиеПечатнойФормы + РасширениеФайла;
    Если ТипЗнч(ТипПересылаемогоФайла) = Тип("ТипФайлаТабличногоДокумента") Тогда
        ЭлементыФормы.ТабличныйДокумент.Записать(ИмяФайлаСообщения, ТипПересылаемогоФайла);
    КонецЕсли;
    //
    //+CRM
    Если НЕ Константы.ИспользованиеВстроенногоПочтовогоКлиента.Получить() Тогда
        
        СтруктураПараметров = Новый Структура();
        СтруктураПараметров.Вставить("Тема", НаименованиеПечатнойФормы);
        
        УправлениеЭлектроннойПочтой.ОткрытьПисьмоПочтовогоКлиентаОперационнойСистемы(СтруктураПараметров);

    Иначе
        
        СтруктураНовогоПисьма = Новый Структура();
        СтруктураНовогоПисьма.Вставить("Тема",НаименованиеПечатнойФормы);
        
        СтруктураПисьма = УправлениеЭлектроннойПочтой.НаписатьПисьмо(глЗначениеПеременной("глТекущийПользователь"), СтруктураНовогоПисьма,,,,,,);
        Если СтруктураПисьма = Неопределено Тогда
            Возврат
        КонецЕсли;
        ВложенияПисьмаТЗ = СтруктураПисьма.Форма.ВложенияПисьмаТЗ.Добавить();
        Файл = Новый Файл(ИмяФайлаСообщения);
        ВложенияПисьмаТЗ.ИмяФайла = Файл.Имя;
        ВложенияПисьмаТЗ.Наименование = ОбъектПредставление;
        Попытка
            ВложенияПисьмаТЗ.Данные = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ИмяФайлаСообщения), Новый СжатиеДанных);
        Исключение
            ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки());
        КонецПопытки;
        УдалитьФайлы(ИмяФайлаСообщения);
    КонецЕсли;
    //-CRM
        
КонецПроцедуры    //    ДействияФормыОтправитьПоEmail()

// Процедура сохраняет табличный документ в формате MXL под введенным пользователем именем файла
Процедура ДействияФормыСохранитьКакMXL(Кнопка)
    
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    Диалог.Заголовок        = "Сохранение табличного документа";
    Диалог.Фильтр            = "Табличный документ (*.mxl)|*.mxl";
    Диалог.Расширение        = "mxl";
    Диалог.ПолноеИмяФайла    = СтрЗаменить(ОбъектПредставление,".","_");
    Диалог.Каталог = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),"ОсновнойКаталогФайлов");
    Если Диалог.Выбрать() Тогда
        Если НЕ ПустаяСтрока(Диалог.ПолноеИмяФайла) Тогда
            ЭлементыФормы.ТабличныйДокумент.Записать(Диалог.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.MXL);
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

// Процедура сохраняет табличный документ в формате HTML под введенным пользователем именем файла
Процедура ДействияФормыСохранитьКакHTML(Кнопка)
    
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    Диалог.Заголовок        = "Сохранение веб-страницы";
    Диалог.Фильтр            = "Веб-страница (*.html)|*.html";
    Диалог.Расширение        = "html";
    Диалог.ПолноеИмяФайла    = СтрЗаменить(ОбъектПредставление,".","_");
    Диалог.Каталог = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),"ОсновнойКаталогФайлов");    
    Если Диалог.Выбрать() Тогда
        Если НЕ ПустаяСтрока(Диалог.ПолноеИмяФайла) Тогда
            ЭлементыФормы.ТабличныйДокумент.Записать(Диалог.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.HTML);
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры    //    ДействияФормыСохранитьКакHTML()

Процедура ДействияФормыСохранитьКакXLS(Кнопка)
    
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    Диалог.Заголовок        = "Сохранение документа Excel";
    Диалог.Фильтр            = "Документ Excel (*.xls)|*.xls";
    Диалог.Расширение        = "xls";
    Диалог.ПолноеИмяФайла    = СтрЗаменить(ОбъектПредставление,".","_");
    Диалог.Каталог = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),"ОсновнойКаталогФайлов");    
    Если Диалог.Выбрать() Тогда
        Если НЕ ПустаяСтрока(Диалог.ПолноеИмяФайла) Тогда
            ЭлементыФормы.ТабличныйДокумент.Записать(Диалог.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS97);
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

// Процедура сохраняет табличный документ в формате PDF под введенным пользователем именем файла
Процедура ДействияФормыСохранитьКакPDF(Кнопка)
    
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    Диалог.Заголовок        = "Сохранение документа PDF";
    Диалог.Фильтр            = "Документ PDF (*.pdf)|*.pdf";
    Диалог.Расширение        = "pdf";
    Диалог.ПолноеИмяФайла    = СтрЗаменить(ОбъектПредставление,".","_");
    Диалог.Каталог = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),"ОсновнойКаталогФайлов");    
    Если Диалог.Выбрать() Тогда
        Если НЕ ПустаяСтрока(Диалог.ПолноеИмяФайла) Тогда
            ЭлементыФормы.ТабличныйДокумент.Записать(Диалог.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.PDF);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

// Процедура печатает табличный документ на выбраном принтере
Процедура ОсновныеДействияФормыПечать(Кнопка)
    ЭлементыФормы.ТабличныйДокумент.ИмяПринтера = ИмяТекПринтера;
    ЭкземпляровНаСтранице=0;//обПраво("КоличествоСтраницНаЛисте",глПрава);
    Если ЭкземпляровНаСтранице<>0 И ЭкземпляровНаСтранице<>1 И ЭкземпляровНаСтранице<>2 Тогда
        ЭкземпляровНаСтранице=0;
    КонецЕсли;
    ЭлементыФормы.ТабличныйДокумент.ЭкземпляровНаСтранице=ЭкземпляровНаСтранице;
    ЭлементыФормы.ТабличныйДокумент.Напечатать(НЕ ПустаяСтрока(ИмяТекПринтера));
    ЧислоКопий = ЭлементыФормы.ТабличныйДокумент.КоличествоЭкземпляров;
КонецПроцедуры

// Получает список принтеров установленных в системе и предлагает пользователю
// выбрать принтер для печати
Процедура ОсновныеДействияФормыСписокПринтеров(Кнопка)
    // Посмотрим был ли ранее составлен список принтеров, которые установлены в системе, если нет, тогда попытаемся получить его
    Если ТипЗнч(Принтеры) <> Тип("СписокЗначений") Тогда
        Принтеры = Новый СписокЗначений;
        Состояние("Составляется список принтеров. Подождите.");
        Попытка
            Locator = Новый COMОбъект("WbemScripting.SWbemLocator");
            Сервисы = Locator.ConnectServer(".");
            Объекты = Сервисы.InstancesOf("Win32_Printer");
            
            // Теперь переберем все принтеры системы
            Для каждого Принтер из Объекты Цикл
                ИмяПринтера = Принтер.Name;
                Пока Найти(ИмяПринтера,"\") > 0 Цикл
                    ИмяПринтера = Сред(ИмяПринтера, Найти(ИмяПринтера,"\")+1);
                КонецЦикла;
                ИмяПринтера = СокрЛП(ИмяПринтера);
                
                Принтеры.Добавить(Принтер.Name,ИмяПринтера,(Принтер.Name=ИмяТекПринтера));
            КонецЦикла;
        Исключение
        КонецПопытки;
        Принтеры.Вставить(0,"ДиалогВыбораПринтера","Диалог выбора принтера",ПустаяСтрока(ИмяТекПринтера));
        Состояние();
    КонецЕсли;
    
    // Предложим пользователю выбрать один из принтеров
    Результат = ВыбратьИзМеню(Принтеры,ЭлементыФормы.кнВспомогательная);
    Если Результат = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    // Установим пометку у "текушего" принтера в списке
    Принтеры.ЗаполнитьПометки(ЛОЖЬ);
    Результат.Пометка = ИСТИНА;
    
    // Обработаем результат выбора
    ИмяТекПринтера = ?(Результат.Значение = "ДиалогВыбораПринтера","",Результат.Значение);
    ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Печать.Текст = "Печать"+?(ПустаяСтрока(ИмяТекПринтера),""," на <"+Результат.Представление+">");
    
    // Передвинем вспомогательную кнопку
    СтараяШирина = ЭлементыФормы.кнВспомогательная.Ширина;
    ЭлементыФормы.кнВспомогательная.Заголовок    = "";
    ЭлементыФормы.кнВспомогательная.Ширина        = 10;
    ЭлементыФормы.кнВспомогательная.Лево = ЭлементыФормы.кнВспомогательная.Лево - 1; // необходимо чтобы установилать "автоширина" кнопки
    ЭлементыФормы.кнВспомогательная.Заголовок = ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Печать.Текст;
    ЭлементыФормы.кнВспомогательная.Лево = ЭлементыФормы.кнВспомогательная.Лево + 1; // необходимо чтобы установилать "автоширина" кнопки
    ЭлементыФормы.кнВспомогательная.Лево = ЭлементыФормы.кнВспомогательная.Лево - (ЭлементыФормы.кнВспомогательная.Ширина - СтараяШирина);
    
    // Напечатаем
    ОсновныеДействияФормыПечать(Неопределено);
КонецПроцедуры

// Открывает окно "Предварительный просмотр"
Процедура ОсновныеДействияФормыПредварительныйПросмотр(Кнопка)
    ТекущийЭлемент    = ЭлементыФормы.ТабличныйДокумент;
    
    // Произведем эмуляцию нажатия клавишь. По ходу дела это единственный способ открыть окно просмотра печати
    WHSShell = Новый COMОбъект("WScript.Shell");
    WHSShell.SendKeys("%");
    WHSShell.SendKeys("~");
    WHSShell.SendKeys("{DOWN 10}");
    WHSShell.SendKeys("~");
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
// ОБРАБОТЧИКИ СОБЫТИЙ, ВЫЗЫВАЕМЫЕ ИЗ ЭЛЕМЕНТОВ ФОРМЫ

Процедура ЧислоКопийПриИзменении(Элемент)
    ЭлементыФормы.ТабличныйДокумент.КоличествоЭкземпляров = ЧислоКопий;
КонецПроцедуры


////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ

Процедура ПриОткрытии()
    // Сформеруем заголовок формы
    Если ПустаяСтрока(ОбъектПредставление) Тогда
        ОбъектПредставление = ПолучитьПредставление(Объект);
    КонецЕсли;
    Заголовок = "Печать <" + ОбъектПредставление + "> " + ДополнительноКПредставлению;
    
    // Восстановим ранее сохраненные настройки
    //ИмяСохраненияПараметров = "ПечатнаяФормаДокументов_" + обСтрокуКID(СтрЗаменить(ОбъектПредставление," ","_")) + "_" + обСтрокуКID(СтрЗаменить(ДополнительноКПредставлению," ","_"));
    //ЭлементыФормы.ТабличныйДокумент.ИмяПараметровПечати = ИмяСохраненияПараметров;
    ЧислоКопий = ЭлементыФормы.ТабличныйДокумент.КоличествоЭкземпляров;
    
    // "Вспомним" о том, на каком принтере в последний раз печатали
    ИмяТекПринтера = ЭлементыФормы.ТабличныйДокумент.ИмяПринтера;
    ПредставлениеТекПринтера = ИмяТекПринтера;
    Пока Найти(ПредставлениеТекПринтера,"\") > 0 Цикл
        ПредставлениеТекПринтера = Сред(ПредставлениеТекПринтера, Найти(ПредставлениеТекПринтера,"\")+1);
    КонецЦикла;
    ПредставлениеТекПринтера = СокрЛП(ПредставлениеТекПринтера);

    // Допишем имя текущего принтера к кнопке "Печать" и подготовим вспомогательную кнопку
    ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Печать.Текст = "Печать" + ?(ПустаяСтрока(ИмяТекПринтера),""," на <"+ПредставлениеТекПринтера+">");
    ЭлементыФормы.кнВспомогательная.Заголовок = ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Печать.Текст;
    ЭлементыФормы.кнВспомогательная.Лево = ЭлементыФормы.кнВспомогательная.Лево - 1; // необходимо чтобы установилать "автоширина" кнопки
    ЭлементыФормы.кнВспомогательная.Лево = ЭлементыФормы.кнВспомогательная.Лево + 1 - (ЭлементыФормы.кнВспомогательная.Ширина - 46) + 1;
    
    // Если табличный документ в режиме "Только просмотр", то сделаем серыми несколько кнопок
    ДоступностьКнопок = НЕ ЭлементыФормы.ТабличныйДокумент.ТолькоПросмотр;
//    ЭлементыФормы.ДействияФормы.Кнопки.ОткрытьВExcel   .Доступность    = ДоступностьКнопок;
    ЭлементыФормы.ДействияФормы.Кнопки.СохранитьКакMXL .Доступность    = ДоступностьКнопок;
    ЭлементыФормы.ДействияФормы.Кнопки.СохранитьКакHTML.Доступность    = ДоступностьКнопок;
    Для каждого ТекКнопка Из ЭлементыФормы.ДействияФормы.Кнопки.ОтправитьПоEmail.Кнопки Цикл
        ТекКнопка.Доступность = ДоступностьКнопок;
    КонецЦикла;
КонецПроцедуры




////////////////////////////////////////////////////////////////////////////////
// ИСПОЛНЯЕМАЯ ЧАСТЬ МОДУЛЯ
ОбъектПредставление            = Неопределено;
ДополнительноКПредставлению    = Неопределено;
Принтеры                    = Неопределено;
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122248 · Ответов: 16 · Просмотров: 3923
 

>  Как заставить Общий модуль УправлениеЭлектроннойПочтой вставлять электронный адрес Контрагента из документа?
Vzonder
Отправлено: 26.01.17, 22:50


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Flexy @ Сегодня, 23:14 * ,
УП 10.3 - очипятка, УТ 10.3
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122214 · Ответов: 16 · Просмотров: 3923
 

>  Как заставить Общий модуль УправлениеЭлектроннойПочтой вставлять электронный адрес Контрагента из документа?
Vzonder
Отправлено: 26.01.17, 21:32


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512



1C 8.2 УТ 10.3

Если отправлять письмо из ФормыЭлемена Контрагента, то все отлично.
В Кому вписывается адрес из представления Адрес электронной почты контрагента для обмена электронными документами.
Причем отлично работает как на встроенном клиенте, так и на внешнем (outlook)
Если нужно отправить письмо из документа, то тут проблема.
Пустое поля.
Прошарил инет: есть способ, который подходит для УП 10.3, но не подходит для нас, т.к у нас своя форма печати, в ней процедура:
Процедура ДействияФормыОтправитьПоEmail(Кнопка)
    РасширениеФайла = "";
    ТипПересылаемогоФайла = Неопределено;
    Если Кнопка.Имя = "ОтправитьКакMXL" Тогда
        ТипПересылаемогоФайла = ТипФайлаТабличногоДокумента.MXL;
        РасширениеФайла = ".mxl";
    ИначеЕсли Кнопка.Имя = "ОтправитьКакHTML" Тогда
        ТипПересылаемогоФайла = ТипФайлаТабличногоДокумента.HTML;
        РасширениеФайла = ".html";
    ИначеЕсли Кнопка.Имя = "ОтправитьКакXLS" Тогда
        ТипПересылаемогоФайла = ТипФайлаТабличногоДокумента.XLS97;
        РасширениеФайла = ".xls";
    ИначеЕсли Кнопка.Имя = "ОтправитьКакPDF" Тогда
        ТипПересылаемогоФайла = ТипФайлаТабличногоДокумента.PDF;
        РасширениеФайла = ".pdf";
    Иначе
        Возврат;
    КонецЕсли;
    
    
    
    НаименованиеПечатнойФормы = СтрЗаменить(ОбъектПредставление,".","_");
    // сохраним ПФ во временный каталог
    ИмяФайлаСообщения = КаталогВременныхФайлов() + НаименованиеПечатнойФормы + РасширениеФайла;
    Если ТипЗнч(ТипПересылаемогоФайла) = Тип("ТипФайлаТабличногоДокумента") Тогда
        ЭлементыФормы.ТабличныйДокумент.Записать(ИмяФайлаСообщения, ТипПересылаемогоФайла);
    КонецЕсли;

    Если НЕ Константы.ИспользованиеВстроенногоПочтовогоКлиента.Получить() Тогда
        СтруктураПараметров = Новый Структура();
        СтруктураПараметров.Вставить("Тема", НаименованиеПечатнойФормы);
            УправлениеЭлектроннойПочтой.ОткрытьПисьмоПочтовогоКлиентаОперационнойСистемы(СтруктураПараметров);
    Иначе
        СтруктураНовогоПисьма = Новый Структура();
        СтруктураНовогоПисьма.Вставить("Тема",НаименованиеПечатнойФормы);
        СтруктураПисьма = УправлениеЭлектроннойПочтой.НаписатьПисьмо(глЗначениеПеременной("глТекущийПользователь"), СтруктураНовогоПисьма,,,,,,);
        Если СтруктураПисьма = Неопределено Тогда
            Возврат
        КонецЕсли;
        ВложенияПисьмаТЗ = СтруктураПисьма.Форма.ВложенияПисьмаТЗ.Добавить();
        Файл = Новый Файл(ИмяФайлаСообщения);
        ВложенияПисьмаТЗ.ИмяФайла = Файл.Имя;
        ВложенияПисьмаТЗ.Наименование = ОбъектПредставление;
        Попытка
            ВложенияПисьмаТЗ.Данные = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ИмяФайлаСообщения), Новый СжатиеДанных);
        Исключение
            ОбщегоНазначения.СообщитьОбОшибке(ОписаниеОшибки());
        КонецПопытки;
        УдалитьФайлы(ИмяФайлаСообщения);
    КонецЕсли;
КонецПроцедуры    //    ДействияФормыОтправитьПоEmail()


Все великолепно работает, кроме вышеописанной проблемки.

Поковыряв, своими неопытными рученками нашел где формируется адрес:


Общий модуль УправлениеЭлектроннойПочтой:



// Функция определяет адрес электронной почты объекта
//
// Параметры
//  Объект - СправочникСсылка, для которого необходимо определить адрес электронной почты
//
Функция ОпределитьАдресПолучателя(Объект) Экспорт

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

КонецФункции



Пожалуйста, помогите, изменить запрос так, чтобы вписывался адрес электронки текущего Контрагента из заказа покупателя.
И если возможно, и из РеализацииТоваровУслуг.
А если возможно, то Ваще из любого документа имеющего Контрагента.
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122209 · Ответов: 16 · Просмотров: 3923
 

>  Как сделать представление нескольких реквизитов?
Vzonder
Отправлено: 25.01.17, 18:43


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512



1С 8.2 УТ 10.3

Есть необходимость записывать 2 (возможно более) реквизита в один.

Предположим есть Реквизит1 он отражается в ПолеРеквизита1 и Реквизит2 который в ПолеРеквизита2.
По аналогии ФормаЭлемента Справочника КонтактныеЛица сделал Представление.
Только оно работает, лишь, когда вносишь значения вручную. К каждому полю прикручивается процедура ПриИзменении…
Но, дело в том, что реквизиты Реквизит1 и Реквизит2 изменяются в других справочниках.
Заходя в форму справочника представление не обновляется…

Научите, пожалуйста, как сделать свое представление.
Весь инет облазил, не нашел.
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122149 · Ответов: 2 · Просмотров: 1441
 

>  Как вывести в Поле формы документа Дату Реализации товаров и услуг?
Vzonder
Отправлено: 22.01.17, 15:14


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


kum12neon @ Вчера, 0:21 * ,

Огромное пасибо.

Все получилось.
Реализовал так:
Процедура ОтборРеализация()    

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

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


Процедура Кнопка1Нажатие(Элемент)
    
         ДатаРеализ = Дата;
        
      РеализацияОбъект = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(НомерДок, ДатаРеализ);
             Если НЕ РеализацияОбъект.Пустая() Тогда
     РеализацияОбъект.ПолучитьОбъект().ПолучитьФорму("ФормаДокумента_AnytosЛогистикаПечать").Открыть();

КонецЕсли;
    
КонецПроцедуры


Посмотрите, пожалуйста, учитывая мой нулевой уровень, предполагаю, что мог криво написать.


Идея такая, если в полях корректно отражается номер реализации, то нажатием кнопки, вызывается форма документа РеализацияТоваровУслуг ФормаДокумента_AnytosЛогистикаПечат (специально облегченныя).
В форме ФормаДокумента_AnytosЛогистикаПечать в процедуре ПриОткрытии
    Дата = ТекущаяДата();
    Записать();
    УниверсальныеМеханизмы.ОткрытьФормуВыбораПечатныхФормОбъекта(ЭтотОбъект, ЭтаФорма);
    Закрыть();

Т.е. меняется Дата реализации на текущую и Выводится форма выбора печатных форм.





  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #122033 · Ответов: 4 · Просмотров: 2234
 

>  Как вывести в Поле формы документа Дату Реализации товаров и услуг?
Vzonder
Отправлено: 20.01.17, 17:57


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


1С 8.2 УТ 10.3
Имеется форма документа (ЗаказПокупателя)
В нее необходимо вывести Номер и дату реализации ( в поле ПолеРеализацияТоваровУслуг и ПолеДатаРеализации соответственно).

Не нашел реквизитов Номер и Дата у документа реализация, поэтому решил выводить запросом.
Например запрос Номера:

Процедура ОтборРеализация()

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

И тут столкнулся с проблемой.
Если в запросе фигурирует и – или Дата – то в поле ничего не отражается.
Что я делаю не так?
Научите, пожалуйста.
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #121995 · Ответов: 4 · Просмотров: 2234
 

>  1С 8.2 УТ 10.3 Как сделать синхронный вывод двух реквизитов из одного справочника?
Vzonder
Отправлено: 19.01.17, 14:49


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512



1С 8.2 УТ 10.3
На примере справочника станций метро Москвы.
Имеется справочник Метро.
В нем 2 реквизита: Станция и Ветка.

Если на форму документа (например, Заказ покупателя) выводить поле с одним реквизитом, то проблем не возникает.
А как вывести два реквизита справочника из одной записи.
Т.е. на форму документа выводится два поля, в одном отражается Станция, во втором Ветка (именно та, что была присвоена Станции в справочнике Метро) ?

  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #121934 · Ответов: 1 · Просмотров: 1465
 

>  Как сохранить в реквизите цвет?
Vzonder
Отправлено: 18.01.17, 12:06


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


Хочется сделать справочник, с перечислением Станций и Веток Московского Метрополитена.
Реализовано по аналогии справочника КонтактныеЛицаКонтрагентов

В форме справочника два поля (с выпадающим списком) с реквизитами (Станция и Ветка) и представление в котором эти реквизиты записываются через пробел.

Все замечательно, вот только длиннннновато получается:
Нахимовский проспект Серпуховско-Тимирязевская
)))))

Подскажите, как можно (наиболее просто) реализовать запись Линии (ветки) другим способом?
Например:
Цвет текста ветки (вместо название ветки вносится символ “-” с соответствующим цветом)
Цветом текста в названии станции
Картинка – в поле ветка выбирается маленькая картинка (квадратик нужного цвета, соответствующего ветке), который в свою очередь отражается в представлении через пробел рядом со станцией.
Цвет поля представления.
Иное

Любой способ передачи цвета, который можно записать в реквизит представления, который в свою очередь можно будет использовать для отражения на формах, формах списка и табличных полях.
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #121854 · Ответов: 0 · Просмотров: 1213
 

>  Как открыть программно открыть форму контрагента? 1C 8.2 УТ 10.3
Vzonder
Отправлено: 17.01.17, 18:47


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512


1C 8.2 УТ 10.3


ОткрытьФорму("Справочник.Контрагенты.Форма.ФормаЭлементаТтн");


При выполнении процедуры из Формы Заказа Покупателя – открывается форма нового элемента….(

Научите, пожалуйста, как открыть форму с текущем Контрагентом.
  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #121826 · Ответов: 1 · Просмотров: 2015
 

>  Как в табличное поле добавить строку из справочника?
Vzonder
Отправлено: 17.01.17, 4:39


Общительный
**

Группа: Пользователи
Сообщений: 38
Регистрация: 27.12.16
Пользователь №: 53512



1С 8.2 УТ 10.3

Создал в форме Справочника Контрагента табличное поле, по абсолютной аналогии с ВидыДеятельности, с соответствующем набором реквизитов, Табличной частью и реквизитами.

Поэтому, чтобы не городить огород, на примере ВидыДеятельности и задам вопрос:

На форме создал поле ввода: ПолеОсновнойВидДеятельности, подключил реквизит ОсновнойВидДеятельности, и включил кнопку выбора.

Теперь в ПолеОсновнойВидДеятельности можно выбирать элементы из СправочникСсылка.ВидыДеятельностиКонтрагентов.

При этом в Табличном поле ВидыДеятельности в имеющихся строках выбирается основной вид деятельности (подсвечивая шрифт жирным) в уже добавленных.

Возникла необходимость добавлять элементы (подобно действию кнопки добавить), путем выбора значения в ПолеОсновнойВидДеятельности.
Т.е. при отсутствии элемента, он автоматически добавляется в табличное поле ВидыДеятельности.

Понимаю, что в процедуре Процедура ПолеОсновнойВидДеятельности ПриИзменении(Элемент) необходимо задать запрос, который сравнит содержимое и если в списке строк не найдет элемент, то его добавит.

И тут у меня полный тупняк.
Вот какая…. Получается:


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


Пожалуйста, подскажите как правильно написать запрос, чтобы при отсутствии указанного в ПолеОсновнойВидДеятельности автоматическое добавление элемента?

И объясните, пожалуйста, как правильно написать, чтобы добавлялась не только новая строка, но и автоматически вставлялся элемент из справочника ВидыДеятельностиКонтрагентов?

  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #121796 · Ответов: 2 · Просмотров: 2494
 

2 страниц V   1 2 >

Новые сообщения  Открытая тема (есть новые ответы)
Опрос  Опрос (есть новые голоса)
Нет новых сообщений  Открытая тема (нет новых ответов)
Нет новых голосов  Опрос (нет новых голосов)
Популярная тема  Горячая тема (есть новые ответы)
Закрыта  Закрытая тема
Нет новых  Горячая тема (нет новых ответов) Перемещена  Тема перемещена
 

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