Вопрос № 171444: Результатом запроса внешней обработки (1С 8.1 УПП) являются все сформированные к выплате суммы по характеру выплаты. Но т.к. список большой (порядка 800 записей), хочу еще показать только те суммы, которые НЕ попадут в банке на лицевой счет работника...
Вопрос № 171447: Доброго времени суток Эксперты. Подскажите плз, как выдернуть данные из текстового поля (Фактический Адрес) и поместить это в поле Excel? Процедура Сформировать() ВходExcel = СоздатьОбъект("Excel.Application"); ВходExcel.Appli...
Вопрос № 171444:
Результатом запроса внешней обработки (1С 8.1 УПП) являются все сформированные к выплате суммы по характеру выплаты. Но т.к. список большой (порядка 800 записей), хочу еще показать только те суммы, которые НЕ попадут в банке на лицевой счет работника. Как правильно сделать : на форму положть Переключатель с именем “ПоВсем” - и если он будет включен, показывать все записи, попавшие в запрос (это у меня работает), - в противном случае - только те, которые не понадут на лицевой счет
работника в банке, (пустой <НомерЛицевогоСчета>) или <Пл_ВидЗарплатногоСчета> # <Пл_ВидЗарплатногоСчетаЗп> ? - Реализовать это двумя запросами или одним запросом, который уже работает, а при формирования секции “Детали” анализировать состояние Переключателя “ПоВсем” ? Если возможно, покажите, пожалуйста, кодом (я только пытаюсь программировать в 1С). С уважением.
Отвечает Maxim S. Orlov, Студент :
Здравствуйте, Надежда Геннадьевна.
Для решения Вашей задачи (для выбора "По всем") могу предложить сл., вариант:
Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Дата, | ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо, | ЗарплатаКВыплатеОрганизацийЗарплата.Сумма КАК Сумма, | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка КАК ПлатежнаяВедомость, | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.ХарактерВыплаты, | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.СпособВыплаты, | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Банк
КАК БанкЗп, | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Пл_ВидЗарплатногоСчета КАК Пл_ВидЗарплатногоСчетаЗп, | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Пл_НомерОСБ КАК Пл_НомерОСБЗп, | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Пл_НомерФОСБ КАК Пл_НомерФОСБЗп, | ЛицевыеСчетаРаботниковОрганизации.Банк, | ЛицевыеСчетаРаботниковОрганизации.Ном
ерЛицевогоСчета, | ЛицевыеСчетаРаботниковОрганизации.Пл_НомерОСБ, | ЛицевыеСчетаРаботниковОрганизации.Пл_НомерФОСБ, | ЛицевыеСчетаРаботниковОрганизации.Пл_ВидЗарплатногоСчета |ИЗ | Документ.ЗарплатаКВыплатеОрганизаций.Зарплата КАК ЗарплатаКВыплатеОрганизацийЗарплата | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации | ПО ЗарплатаКВыплатеОрганизацийЗарплата.Физлицо = ЛицевыеСчетаРаботниковОрганизации.ФизЛицо | И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Банк
= ЛицевыеСчетаРаботниковОрганизации.Банк | И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Пл_НомерОСБ = ЛицевыеСчетаРаботниковОрганизации.Пл_НомерОСБ | И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Пл_ВидЗарплатногоСчета = ЛицевыеСчетаРаботниковОрганизации.Пл_ВидЗарплатногоСчета |ГДЕ | ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.ХарактерВыплаты = &H_vypl | И ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.СпособВыпл
аты = &S_vypl | И ДЕНЬ(ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Дата) = ДЕНЬ(&Дата1) | И МЕСЯЦ(ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Дата) = МЕСЯЦ(&Дата1) | И ГОД(ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Дата) = ГОД(&Дата1)"; Если Не ПоВсем Тогда ТекстЗапроса = ТекстЗапроса + " | И ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета <> &ПустаяСтрока | И ЛицевыеСчетаРаботниковОрганизации.Пл_ВидЗарплатногоСчета <> &ПустаяСтрока"; КонецЕсли; ТекстЗапроса
= ТекстЗапроса + " |ИТОГИ | СУММА(Сумма) |ПО | ОБЩИЕ"; Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("H_vypl", H_vypl); Запрос.УстановитьПараметр("S_vypl", S_vypl); Запрос.УстановитьПараметр("Дата1", Дата1); Запрос.УстановитьПараметр("ПустаяСтрока", ""); - Что касается этой строчки
, то справедливо следующее замечание, т.к. вы не указали тип дополнительных полей (ведь конфигурация у вас нетиповая), то я посчитал тип данных, хранимых в них "Строка".
----- Не надо чинить то, что еще не сломалось .......
Ответ отправил: Maxim S. Orlov, Студент
Ответ отправлен: 21.08.2009, 18:20
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 253444
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 171447:
Доброго времени суток Эксперты. Подскажите плз, как выдернуть данные из текстового поля (Фактический Адрес) и поместить это в поле Excel? Процедура Сформировать() ВходExcel = СоздатьОбъект("Excel.Application"); ВходExcel.Application.Workbooks.Open(НазваниеФайла); СпрКон = СоздатьОбъект("Справочник.Контрагенты"); СпрКон.ВыбратьЭлементы(); НомерСтроки = 1; Пока СпрКон.ПолучитьЭлемент()=1 Цикл ВходExcel.ActiveSheet.Cells(НомерСтроки,1).Value = СпрКон.Наименование; ВходExcel.ActiveSheet.Cells(НомерСтроки,2).Value
= СпрКон.АдресДоставки; ВходExcel.ActiveSheet.Cells(НомерСтроки,3).Value = СпрКон.Рассылка; ВходExcel.ActiveSheet.Cells(НомерСтроки,4).Value = СпрКон.Телефоны; ВходExcel.ActiveSheet.Cells(НомерСтроки,5).Value = СпрКон.ЭлектронныйАдрес; (Тут все хорошо цепляется и выгружается, привязка к полю ввода и все норм. Но вот привязать это дело к тексту не удается, текст, как указанно выше Это ф
актический адрес, типовой, как у любого физлица в прописке например)
Резать текст ненадо никак, нужно просто выдернуть строку, как она отображается в текстовом поле. Заранее благодарен.
Отправлен: 18.08.2009, 14:05
Вопрос задал: Mlexer, Посетитель
Всего ответов: 2 Страница вопроса »
Отвечает Anton Devitsin, Профессионал :
Здравствуйте, Mlexer.
Тут все просто - нет никаких текстовых полей! При работе по OLE все передаваемые данные должны иметь четкий размер!!! Иначе - нельзя - система не даст!
Ответ отправил: Anton Devitsin, Профессионал
Ответ отправлен: 18.08.2009, 18:22
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 253361
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Шахрайчук Владимир Анатольевич, Специалист :
Здравствуйте, Mlexer. Вопрос: реквизит Фактический Адрес периодический? Если да, то НужнаяДата=РабочаяДата() например ВходExcel.ActiveSheet.Cells(НомерСтроки,7).Value =СокрЛП(СпрКон.ФактическийАдрес.Получить(НужнаяДата)); Замечание: если в конфигураторе установлена фиксированная длина для поля Телефоны, то поле является праводополненым пробелами и нужно писать ВходExcel.ActiveSheet.Cells(НомерСтроки,4).Value = СокрЛП(СпрКон.Телефоны); --Но вот привязать это дело к тексту не удается
в 1С в справочниках СпрКон нет поля текстового типа, есть тип Строка (бывает фиксированное длины, бывает неограниченной, бывает периодической, бывает непериодической), в этом направлении не копайте. Но в этой строке может быть символ РазделительСтрок(), при попытке передать строку с этим символом ВходExcel откажется его принять. Тогда для удаления этого символа используйте процедуры Поз=Найти(ФактическийАдрес,РазделительСтрок()); Если Поз>0 тогда Вывад=
Сред(ФактическийАдрес,1,поз-1)+" "+Сред(ФактическийАдрес,Поз+1) или поз+2, проверьте на практике, я не помню, сколько байт РазделительСтрок() занимает. кажется, это стандартные CRLF. Также для удаления разделителястрок можно строку загрузить в СписокЗначений, а полученные значения уже будут без разделителя, и их можно будет передать в Эксель Сп.ИзстрокиСРазделителями(
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.