Выпуск № 1028 от 03.06.2009, 15:05
Администратор рассылки: Калашников О.А., Руководитель
В рассылке: подписчиков - 520, экспертов - 109
В номере: вопросов - 1, ответов - 2
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 168499: Добрый день, уважаемые эксперты. 1с 7.7 бухгалтерия. Нужно наладить печать документов на матричный принтер. Задача: перевести документ в ДОС формат и отправка на принтер....
Вопрос № 168499:
Добрый день, уважаемые эксперты. 1с 7.7 бухгалтерия. Нужно наладить печать документов на матричный принтер. Задача: перевести документ в ДОС формат и отправка на принтер.
СтрокаФайла = КаталогПользователя()+"PrintDOS.txt"; Текст
Выгрузки.Записать(СтрокаФайла); КомандаСистемы(Строка("print /d:lpt1 """+СтрокаФайла+"""")); КонецПроцедуры //ПечДОС
И из обработки печати прайса: на форме обработки есть флажок "Эпсон" для печати на матричник и текстовое поле "Строкапечати" для указания имени принтера. В процедуре ПриОткрытии в зависимости от имени компьютера выбирается принтер: это может быть локальный для указанных компьютеров или сетевой
для остальных.
// накладываем множественный фильтр по товарам Если МФНоменклатура.РазмерСписка()<>0 Тогда
Для Индекс=1 По МФНоменклатура.РазмерСписка() Цикл Позиция = МФНоменклатура.ПолучитьЗначение(Индекс);
НоменкВложенаВДругую=0; Для Индекс2=1 По МФНоменклатура.РазмерСписка() Цикл Если Индекс2<>Индекс Тогда Позиция2
= МФНоменклатура.ПолучитьЗначение(Индекс2); Если Позиция2.ЭтоГруппа()>0 Тогда Если Позиция.ПринадлежитГруппе(Позиция2)>0 Тогда НоменкВложенаВДругую=1; Прервать; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла;
Если НоменкВложенаВДругую=1 Тогда Продолжить; КонецЕсли;
Если Позиция.ЭтоГруппа()>0 Тогда СпрПозиций = СоздатьОбъект("Справ
очник."+ВидСправочника); СпрПозиций.ИспользоватьРодителя(Позиция.ТекущийЭлемент()); СпрПозиций.ВыбратьЭлементы(1); Пока СпрПозиций.ПолучитьЭлемент()>0 Цикл Если СпрПозиций.ЭтоГруппа()=0 Тогда СписокПозиций.ДобавитьЗначение(СпрПозиций.ТекущийЭлемент()); Если Нрег(ВидСправочника) = "прайс_лист" Тогда СписокТоваров.ДобавитьЗначение(СпрПозиций.Товар.ТекущийЭлемент()); Иначе СписокТоваров.ДобавитьЗначение(СпрПозиций.ТекущийЭлемент()); КонецЕсли;
КонецЕсли; КонецЦикла; Иначе СписокПозиций.ДобавитьЗначение(Позиция.ТекущийЭлемент()); СписокТоваров.ДобавитьЗначение(Позиция.ТекущийЭлемент()); КонецЕсли;
КонецЦикла;
Если СписокПозиций.РазмерСписка()=0 Тогда Предупреждение("Список позиций пуст"); Возврат; КонецЕсли;
НаложенФильтрПоТоварам=1; КонецЕсли;
// не включать отсутствующие Если ТолькоПрисутствующие<>0 Тогда
ВремРегистры=СоздатьОбъект("Регистры"); Рег=ВремРегистры.ОстаткиТоваров; Если РабочаяДата()<ПолучитьДатуТА() Тогда Рег.ВременныйРасчет(); Если НаложенФильтрПоТоварам=1 Тогда Рег.УстановитьЗначениеФильтра("Товар",СписокТоваров,2); КонецЕсли; Рег.УстановитьЗначениеФильтра("Фирма",глПустаяФирма); ВремРегистры.РассчитатьРегистрыПО(РабочаяДата()); КонецЕсли;
Если
НаложенФильтрПоТоварам=1 Тогда
ЧислоТов = СписокПозиций.РазмерСписка(); Для Индекс = 1 По ЧислоТов Цикл
// накладываем фильтр по присутствию/отсутствию Если Номенк.ВидТовара&
lt;>Перечисление.ВидыТоваров.Товар Тогда НеУдовлетвФильтру=1; Иначе Кол = ВремРегистры.ОстаткиТоваров.СводныйОстаток(глПустаяФирма,Номенк,,"ОстатокТовара"); Если Кол<=0 Тогда НеУдовлетвФильтру=1; КонецЕсли; КонецЕсли;
Если НеУдовлетвФильтру=1 Тогда СписокПозиций.УдалитьЗначение(ЧислоТов+1-Индекс); КонецЕсли; КонецЦикла;
Иначе
СпрПозиций = СоздатьОбъект("Справочник."+ВидСправочника); СпрПозиций.ВыбратьЭлементы(); Пока
СпрПозиций.ПолучитьЭлемент()>0 Цикл Если СпрПозиций.ЭтоГруппа()=0 Тогда Номенк = СпрПозиций.ТекущийЭлемент(); Если Номенк.ВидТовара=Перечисление.ВидыТоваров.Товар Тогда Кол = ВремРегистры.ОстаткиТоваров.СводныйОстаток(глПустаяФирма,Номенк.ТекущийЭлемент(),,"ОстатокТовара"); Если Кол>0 Тогда СписокПозиций.
ДобавитьЗначение(СпрПозиций.ТекущийЭлемент()); КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла;
КонецЕсли;
Если СписокПозиций.РазмерСписка()=0 Тогда Предупреждение("Список позиций пуст"); Возврат; КонецЕсли;
НаложенФильтрПоТоварам=1;
КонецЕсли;
// теперь отбираем позиции справочника ТекстЗапроса = " |Период С '"+Строка(ПолучитьДатуТА())+"' По '"+Строка(ПолучитьДатуТА())+"'; |Позиция =
Справочник.Номенклатура.ТекущийЭлемент; |Товар = Справочник.Номенклатура.ТекущийЭлемент; |Поставщик = Справочник.Номенклатура.Поставщик; |"; Если РынкинТовар = 1 Тогда ТекстЗапроса = ТекстЗапроса+" |Рынок = Справочник.Номенклатура.Рынок; |"; КонецЕсли; ТекстЗапроса = ТекстЗапроса+" |Группировка Позиция Упорядочить По Позиция.Наименование; |Услов
ие (Позиция В СписокПозиций); |Условие (Поставщик В ВыбПроизводитель); |"; Если РынкинТовар = 1 Тогда ТекстЗапроса = ТекстЗапроса+" |Условие (Рынок = 1); |"; КонецЕсли;
// выполняем запрос Запрос = СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда Возврат; КонецЕсли;
// Создание Таблицы для выходного отчета Таб=СоздатьОбъект("Таблица");
Ном=0;
Если (ЕдиницаПечати.ТекущаяСтрока()<>1)И(ЕдиницаПечати.ТекущаяСтрока()<>2)
Тогда ПечатьВФиксЕдиницах = 0; Иначе ПечатьВФиксЕдиницах = 1; КонецЕсли;
Если ВалютаПечати.Выбран()=0 Тогда ПечатьВФиксВалюте = 0; Заг=""; Иначе ПечатьВФиксВалюте = 1; Валюта = ВалютаПечати; Заг="Цены указаны в "+СокрЛП(Валюта.Кратко); КонецЕсли;
Пока
СписокГрупп.РазмерСписка()>0 Цикл Гр = СписокГрупп.ПолучитьЗначение(1);
Если Запрос.Позиция.ПринадлежитГруппе(Гр)>0 Тогда Если Гр.Уровень()=1 Тогда Таб.ВывестиСекцию("Группа1|НазваниеПозиции"); ТекстВыгрузки.ДобавитьСтроку((Формат(Строка(Г
р.Наименование),"С53"))+"| | | "); у1=Строка(Гр.Наименование)+"."; ИначеЕсли Гр.Уровень()=2 Тогда Таб.ВывестиСекцию("Группа2|НазваниеПозиции"); ТекстВыгрузки.ДобавитьСтроку((Формат(у1+Строка(Гр.Наименование),"С53"))+"| | | "); у2=Строка(Гр.Наименование)+"."; Иначе Таб.ВывестиСекцию("Группа3|НазваниеПозиции"); ТекстВыгрузки.ДобавитьСтроку((Формат(у1+у2+Строка(Гр.Наименование),"С53"))+"|
| | "); КонецЕсли; КонецЕсли; СписокГрупп.УдалитьЗначение(1); КонецЦикла;
Если ПечатьВФиксЕдиницах=1 Тогда Если ЕдиницаПечати.ТекущаяСтрока()=1 Тогда Единица = Запрос.Товар.ЕдиницаПоУмолчанию; ИначеЕсли ЕдиницаПечати.ТекущаяСтрока()=2 Тогда Единица = глВернутьБазовуюЕдиницуТовара(Запрос.Товар.ТекущийЭ
лемент()); КонецЕсли; КонецЕсли;
//Вызов выходного отчета в окно просмотра и редактирования. // Таб.ПовторятьПриПечатиСтроки(1,5); Таб.Опции(0,0,3,0,ПарСтрСпр); Таб.Защита(0); Таб.ТолькоПросмотр(0); Таб.Показать(ВидСправочника,"");
СтрокаФайла = КаталогПользователя()+"PrintDOS_"+Строка(ДатаОт
чета)+"_"+Строка(ВыбПроизводитель)+"_"+Строка(Процент)+".txt"; // ТекстВыгрузки.ДобавитьСтроку(РазделительСтраниц); ТекстВыгрузки.Записать(СтрокаФайла); Если Эпсон=1 Тогда // ТекстВыгрузки.Показать("",""); Если Предупреждать = 1 Тогда Предупреждение("Прайс для печати на принтер "+СтрокаПечати+" |в текстовом режиме подготовлен. |Нажмите ОК для печати."); КонецЕсли; КомандаСистемы(Строка("print
/d:"+СтрокаПечати+" """+СтрокаФайла+"""")); КонецЕсли; КонецПроцедуры ... Процедура ПриОткрытии() // Предопределенная процедура
...
Если Найти("=VUPISKA1=VUPISKA2=OPERATOR2=BUHGALTER=SYSADMIN=", ИмяКомпьютера()) > 0 Тогда //на этих компах матричные Эпсоны СтрокаПечати = "LPT1" Иначе // а вот на остальных лазерники или сетевые, и всё пошлём компьют
еру OPERATOR2 на печать СтрокаПечати = """\\OPERATOR2\Epson LX-300+""" КонецЕсли;
... КонецПроцедуры
Успехов! С уважением, Владимир.
----- И как хотите, чтобы с вами поступали люди, так и вы поступайте с ними. (Евангелие от Луки, 6:31, совр. перевод)
Ответ отправил: Владимир Лазурко, Практикант
Ответ отправлен: 02.06.2009, 08:56
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 250239
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.