Вопрос № 80979: Здравствуйте Уважаемые эксперты! Помогите решить проблему. Хотим приобрести сканеры для штрих-кодов. Некоторые используют сканер от
Metrologic а другие от Symbol. В чем их различия? Какую из них использовать в 1С и Почему?
Заранее благо...Вопрос № 80983: Здравствуйте уважаемые эксперты! Недавно спрашивал у вас по настройкам терминального режима работы 1С вер.8. Новый вопрос: на некоторых раб.станциях не виден свой принтер, причём, он (свой принтер) расшарен. Когда в отчётах пытаюсь его установить, си...Вопрос № 80986: Вопрос по 1С 7.7 Услуги+Производство+Бухгалтерия. Имеется встроенная обработка, экспортирующая платежные поручения в клиент-банк.
Необходимо поменять значение Реквизита "ИмяФайлаВыгрузки (реквизит имеет текстовый тип),Пользователь выбирает путь ...Вопрос № 81046: Здравствуйте эксперты! Данная в приложении внешняя обработка создает документ и сразу его сохраняет. Как мне сделать чтобы документ создавался, заполнялся (так же), открывался, но сразу не сохранялся, а только после этого уже по нажатии кнопки ОК в ф...Вопрос № 81078: Здравствуйте!
Скажите пожайлуста как обработать такую строку и записать в ТаблицуЗначений (ТЗ)
"1",11111,"01.01.2007","ИВАНОВ ИВАН ИВАНОВИЧ, д.р. 22.08.1963"
Необходимо чтобы в ТЗ были отражены...
Вопрос № 80.979
Здравствуйте Уважаемые эксперты! Помогите решить проблему. Хотим приобрести сканеры для штрих-кодов. Некоторые используют сканер от
Metrologic а другие от Symbol. В чем их различия? Какую из них использовать в 1С и Почему?
Заранее благодарю!!!
Отправлен: 04.04.2007, 08:07
Вопрос задал: Рубик (статус: 1-ый класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Яна
Здравствуйте, Рубик!
Есть оборудование с которым 1С "умеет" работать, а есть с которым "не умеет". Если у Вас типовая конфигурация, то в мастере настройки торгового оборудования можно посмотреть с каким оборудованием ее "научили" работать разработчики, а с каким "не научили". В случае отсутствия оборудования в списке может оказаться, что Вам "учить" прийдется самостоятельно.
Ответ отправила: Яна (статус: 10-ый класс)
Ответ отправлен: 04.04.2007, 08:27 Оценка за ответ: 3 Комментарий оценки: Сканер там есть. Но какую из них удобнее использовать Metrologic или Symbol? и Почему?
Отвечает: Краюшкин Игорь Валерьевич
Здравствуйте, Рубик!
Не знаю, что такое Symbol, но с Metrologic'ами 1C работает без проблем. Чтобы не было лишних проблем, советую использовать их.
Кстати, в "Настройках торгового оборудования" нет настроек для сканеров Symbol.
Ответ отправил: Краюшкин Игорь Валерьевич (статус: 7-ой класс)
Ответ отправлен: 04.04.2007, 13:59 Оценка за ответ: 5
Отвечает: Velial
Здравствуйте, Рубик!
Я бы посоветовал Metrologic. С ними 1С работает замечательно и настраиваются они как стандартный сканер, т.е. нет лишних проблем. Если нужна будет помощь в настройке пиши в личку. Сталкивался с 2-мя Symbol'ами - не понравилось. Проблем больше.
Удачи!
--------- Можно сделать защиту от дурака, но только от неизобретательного /Закон Нейсдра/
Ответ отправил: Velial (статус: Студент)
Ответ отправлен: 06.04.2007, 12:43 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Вопрос № 80.983
Здравствуйте уважаемые эксперты! Недавно спрашивал у вас по настройкам терминального режима работы 1С вер.8. Новый вопрос: на некоторых раб.станциях не виден свой принтер, причём, он (свой принтер) расшарен. Когда в отчётах пытаюсь его установить, система ругается: вы не имеете права доступа к этому принтеру. Пока (временно) направляем печать на принтеры, установленные на соседних компах. Из 20 раб.мест 3 не подключились успешно. Почему, ведь на всех компах одинаковые настройки?
Отвечает: Kim
Здравствуйте, Шалагин Владимир Анатольевич!
При подключению к терминальному серверу, в программе Remoute Desktop Connection-
Кнопка Options - Закладка Local Resources - поставьте галочку возле Принтеры
она позволяет автоматически подключать локальный принтер по умолчанию к терминальной сессии.
Но есть проблема, если вы используете принтеры Canon.
У них криво написаны драйвера и постоянно возникают проблемы.
Удачи!!
Ответ отправил: Kim (статус: 2-ой класс)
Ответ отправлен: 04.04.2007, 09:17
Отвечает: Яна
Здравствуйте, Шалагин Владимир Анатольевич!
1. Попробуйте зайти под разными пользователями. Если принтер недоступен для всех пользователей, то нужно смотреть настройки операционной системы. Если под некоторыми доступен, а под другими нет - права пользователей в 1С.
2. А модели принтеров отличаются? Возможно нужно переставить драйвера.
Драйвера к принтеру устанавливались до или после 1С. На всех машинах было одинаково?
3. А из других программ на эти принтера удается печатать? Под тем же пользователем операционной системы.
Ответ отправила: Яна (статус: 10-ый класс)
Ответ отправлен: 04.04.2007, 09:20
Вопрос № 80.986
Вопрос по 1С 7.7 Услуги+Производство+Бухгалтерия. Имеется встроенная обработка, экспортирующая платежные поручения в клиент-банк. Необходимо поменять значение Реквизита "ИмяФайлаВыгрузки (реквизит имеет текстовый тип),Пользователь выбирает путь к файлу, но при повторном запуске этой обработки в реквизите старые значения. Подскажите как сделать так чтобы пользователю не пришлось заново выбирать путь.
Смотрела код. Там В процедура ПриОткрытии() Запускается с параметром Настройка.
Если Настройка=1, то ставятся старые Значения. Я не нашла в каком месте Настройка принимает значение =1 до запуска процедуры ПриОткрытии() . И откуда берутся старые значения реквизита "ИмяФайлаВыгрузки"?
Отвечает: Яна
Здравствуйте, Оксана/kasy!
Во многих отчетах есть возможность сохранения настроек. Я думаю это как раз тот случай. Нужно сохранить настройки отчета, путь к файлу вероятно является одной из них. А потом восстановить сохраненную настройку.
Кроме того, Вам ничто не мешает в этом месте кода изменить файл по умолчанию.
Настройка=0, это если по умолчанию. Путь к файлу в виде строки (в кавычках), можно вместо того, что там написано, написать ИмяФайлаВыгрузки="Ваш путь", пример пути "C:myfile.txt". Т.е. путь должен быть полным.
Это удобно, если Вам всегда нужны одни и те же значения, если разные - то нужно сохранить несколько различных настроек. Это делается в пользовательском режиме в форме обработки должны быть соответствующие кнопки.
Ответ отправила: Яна (статус: 10-ый класс)
Ответ отправлен: 04.04.2007, 09:36 Оценка за ответ: 4
Отвечает: Starhan
Здравствуйте, Оксана/kasy!
Это просто объявляете переменную в глобальном модуле (допустим ПутьКФайлу)
и запоминаете ее в процедуре ПоКнопкеОК() или Сформировать() вообщем в той которая у вас отрабатывает согласие пользователя.
а в процедуре Приокрытии() вытаскиваете оттуда значение
(только сделайте проверку на не пустое значение)
Если вы хотите сохранить путь к фаулу В случае выхода пользователя из сеанса то
Путь к файлу можно сохранить через метод СохранитьЗначение()
а вытащить через метод ВосстановитьЗначение() (подробности смотрите в синтаксис помошнике или в оф. руководстве "Описание встроеннго языка ч1" глава "Системные процедуры и функции " стр 136)
Но это Путь Самурая Не боящегося трудностей на самом деле все еще проще ;) там есть кнопка Сохранить настройку ))
Нажимаете на нее соглашаетесь и все при соедующем открытии все будет как было))
--------- Победа не должна приводить к зазнайству, а поражение к малодушию.
Ответ отправил: Starhan (статус: 7-ой класс)
Ответ отправлен: 04.04.2007, 09:47
Отвечает: BigHard
Здравствуйте, Оксана/kasy!
к ответам предыдущих экспертов можно еще добавить, что старые значения вытаскиваются при открытии с помощью функции Каталогпользователя()-Строковое значение, содержащее имя рабочего каталога пользователя.
оттуда и путь для выгрузки и загрузки, а имя файла указано явно - ()+1c_to_kl.txt
--------- Чем отличается чайник от программиста: У чайника в одном килобайте 1000 байт, а у программиста в одном километре 1024 метра
Ответ отправил: BigHard (статус: 7-ой класс)
Ответ отправлен: 04.04.2007, 10:24 Оценка за ответ: 4
Отвечает: Ovr1970
Здравствуйте, Оксана/kasy!
Чтобы сохранить настройку нужно воспользоваться кнопкой панели отчета или меню "Действия->Сохранить настройку"
Соответственно если настройка сохранена, то автоматически параметр настройка станет равным 1. Настройка сохраняется для каждого пользователя в отдельности.
Ответ отправил: Ovr1970 (статус: Студент)
Ответ отправлен: 04.04.2007, 11:48 Оценка за ответ: 5 Комментарий оценки: Спасибо за подробный и развернутый ответ.
Вопрос № 81.046
Здравствуйте эксперты! Данная в приложении внешняя обработка создает документ и сразу его сохраняет. Как мне сделать чтобы документ создавался, заполнялся (так же), открывался, но сразу не сохранялся, а только после этого уже по нажатии кнопки ОК в форме документа сохранялся (проводился)?
Приложение:
Отправлен: 04.04.2007, 15:17
Вопрос задала: Darina (статус: Посетитель)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Яна
Здравствуйте, Darina!
В конце есть строка Док.Записать() - эта команда сохраняет документ, если ее удалить - документ сохраняться не будет.
Чтобы это строка сработала в другой процедуре (при нажатии на кнопку), нужно переменную Док описать вне процедуры (вверху модуля) или сделать реквизитом обработки.
Ответ отправила: Яна (статус: 10-ый класс)
Ответ отправлен: 04.04.2007, 15:25
Отвечает: Dimaxx
Здравствуйте, Darina!
Я в семерке не силен но попробуй так.
Процедура ВыбратьФайл(Конт) Экспорт
Перем Каталог, ИмяФайла, СтрокаФайлов;
СтрокаФайлов="Файлы Excel (*.xls)|*.xls";
ИмяФайла=Конт.ИмяФайла;
Если ФС.ВыбратьФайл(0, ИмяФайла, Каталог,"Выберите файл", СтрокаФайлов)=1 Тогда
Конт.ИмяФайла=Каталог+ИмяФайла;
КонецЕсли;
КонецПроцедуры
//_____________________________________________________________________________
Процедура Сформировать()
Док=СоздатьОбъект("Документ.ПоступлениеТовара");
Если Док.КоличествоСтрок()>0 Тогда
Если Вопрос("Таблица не пуста. Очистить ?",4)=6 Тогда
Док.УдалитьСтроки();
КонецЕсли;
КонецЕсли;
Док.Новый();
Если ФС.СуществуетФайл(ИмяФайла)=1 Тогда
ОкноExcel = СоздатьОбъект("Excel.Application");
ОкноExcel.Workbooks.Add(ИмяФайла);
КолвоОшибок=0;
Для Ном=12 По 1000 Цикл
Состояние("Обрабатываем строку "+Ном);
Тов=СокрЛП(ОкноExcel.Cells(Ном,1).Value);
Если ПустаяСтрока(Тов)=1 Тогда
КолвоОшибок=КолвоОшибок+1;
Если КолвоОшибок=10 Тогда
Прервать;
КонецЕсли;
Продолжить;
Иначе
КолвоОшибок=0;
КонецЕсли;
Док.НоваяСтрока();
Спр=СоздатьОбъект("Справочник.Номенклатура");
Если Спр.НайтиПоНаименованию(СокрЛП(ОкноExcel.Cells(Ном,2).Value),0,1)=1 Тогда
Сообщить("Для элемента "+СокрЛП(ОкноExcel.Cells(Ном,2).Value)+" только обновляем Закупочную цену", "!");
Док.Товар=Спр.ТекущийЭлемент();
Иначе
Спр.ИспользоватьДату(РабочаяДата());
Спр.Новый();
Спр.Наименование=СокрЛП(ОкноExcel.Cells(Ном,2).Value);
Спр.ЕдиницаИзмерения=Константа.ОсновнаяЕдиницаИзмерения;
Спр.Записать();
Сообщить("Создали Номенклатуру с наименованием "+СокрЛП(ОкноExcel.Cells(Ном,2).Value), "I");
Если Спр.НайтиПоНаименованию(СокрЛП(ОкноExcel.Cells(Ном,2).Value),0,1)=1 Тогда
Док.Товар=Спр.ТекущийЭлемент();
КонецЕсли;
КонецЕсли;
Док.Количество=Число(СокрЛП(ОкноExcel.Cells(Ном,3).Value));
Док.Цена=Число(СокрЛП(ОкноExcel.Cells(Ном,7).Value))/Число(СокрЛП(ОкноExcel.Cells(Ном,3).Value));
Док.Сумма=Число(СокрЛП(ОкноExcel.Cells(Ном,7).Value));
Док.ЦенаРозничная=Число(СокрЛП(ОкноExcel.Cells(Ном,5).Value));
Док.ЦенаРозн=Док.Товар.ЦенаРозн.Получить(РабочаяДата());
КонецЦикла;
//Вот здесь документ записывается нужно сделать вот так.
ОткрытьФорму(Док.ТекущийДокумент());
ОкноExcel.Workbooks.Close();
ОкноExcel.DisplayAlerts = 0;
ОкноExcel.Quit();
Предупреждение("Загрузка из файла закончена !" ,10);
КонецЕсли;
КонецПроцедуры
Ответ отправил: Dimaxx (статус: 3-ий класс)
Ответ отправлен: 04.04.2007, 15:27 Оценка за ответ: 3 Комментарий оценки: Извините, не то
Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Darina!
Если документ не имеет табличной части, то можно сделать так (вырезка из моей обработки):
Конт="";
ОткрытьФорму("Документ.ЧекИнкасатора",Конт);
Конт.ДатаДок=ТЗ.ПолучитьЗначение(Строк,"Дата");//
Конт.Склад=Склад;
Конт.Инкасация=ТЗ.ПолучитьЗначение(Строк,"Сумма");
Конт.Основание=Прав(СокрЛП(СтрФайл),50);
Конт.Форма.Обновить(0);
Если документ имеет табличную часть, то так не получится. Нужно данные табличной части запихнуть в ТЗ, саму ТЗ и данные шапки запихнуть в СписокЗначений. При открытии формы нового документа вызывается процедура ВводНового() и в этой процедуре можно анализировать параметр формы и строить документ.
Пример: часть обработки строит Сп из ТЗ
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("ТМЦ","Справочник.Номенклатура");
ТЗ.НоваяКолонка("КолвоНал","Число",15,3);
ТЗ.НоваяКолонка("КолвоБезНал","Число",15,3);
Cmd.CommandText="
|SELECT b.id_azs, b.n_report, b.id_typ_sale as typs_sale, b.id_tovar, b.volume, b.sum, b.price
|FROM smena b";
Rs=CreateObject("ADODB.RecordSet");
Rs=Cmd.Execute;
Попытка
Rs.MoveFirst();
Пока Rs.EOF() = 0 do
Если (Rs.Fields("id_azs").Value=idAZS)И(Rs.Fields("n_report").Value=НомерОтчета)И(Rs.Fields("volume").Value<>0)И(Сп.Принадлежит(Rs.Fields("id_tovar").Value)=1) Тогда
ТЗ.ПолучитьСтрокуПоНомеру(Rs.Fields("id_tovar").Value-10000);
Если Rs.Fields("typs_sale").Value=0 Тогда//нал
ТЗ.КолвоНал=ТЗ.КолвоНал+Rs.Fields("volume").Value;
ТЗ.СуммаНал=ТЗ.СуммаНал+Rs.Fields("sum").Value;
ТЗ.Цена=Rs.Fields("price").Value;
Иначе
ТЗ.КолвоБезНал=ТЗ.КолвоНал+Rs.Fields("volume").Value;
Если Rs.Fields("sum").Value<>0 Тогда
Предупреждение("При продаже бензинов по безналу стоит ненулевая сумма");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Rs.MoveNext();
КонецЦикла;
Исключение
Предупреждение("Ошибка чтения данных. Вероятно, данный отчет smena совсем пустой");
Возврат;
КонецПопытки;
Обратите внимание на сигнатуру ТипИмпорта - с помощью ее мы сможем определить, создается ли документ интерактивно или из обработки, если да, то с какой.
И в модуле формы документа строим документ
Процедура ВводНового(Призн,Об)
Если Призн=0 Тогда
ЗаполнитьШапку(Контекст);
Валюта=Константа.ОснВалютаПродажи;
КонецЕсли;
ДатаКурса=ДатаДок;
Курс=КурсВалюты(Валюта,ДатаКурса);
СчетТМЦ=Константа.ОсновнойСчетРозницы;
СменаСВрем="08:00";
СменаСДат=ДатаДок-1;
СменаПоВрем="08:00";
СменаПоДат=ДатаДок;
Сп=Форма.Параметр;
Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда
Если Сп.Получить("ТипИмпорта")="Автоматический" Тогда
//уверены, что документ строится из обработки
ДатаДок=Сп.Получить("ДатаДок");
Основание=Сп.Получить("Основание");
Склад=Сп.Получить("Склад");
СменаСВрем=Сп.Получить("СменаСВрем");
СменаПоВрем=Сп.Получить("СменаПоВрем");
СменаСДат=Сп.Получить("СменаСДат");
СменаПоДат=Сп.Получить("СменаПоДат");
ОстатокГРННачало=Сп.Получить("ДеньгиНаНачало");
ОстатокГРННКонец=Сп.Получить("ДеньгиНаКонец");
Инкасация=Сп.Получить("Инкас");
ТЗ=Сп.Получить("Данные");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
НоваяСтрока();
ТМЦ=ТЗ.ТМЦ;
ВыборТМЦ();
Цена=ТЗ.Цена;
ОстатокНаНачало=ТЗ.КолвоНачало;
Приход=ТЗ.Приход;
ПоНалу=ТЗ.КолвоНал;
Если ПоНалу<>0 Тогда
Цена=ТЗ.СуммаНал/ПоНалу;
КонецЕсли;
ПоТалонам=ТЗ.КолвоБезНал;
РасходВсего=ПоНалу+ПоВедомостям+ПоТалонам;
СчетчикКонец=РасходВсего;
СчетчикНачало=0;
СчетчикВсего=СчетчикКонец-СчетчикНачало-СчетчикСлилиЗалили;
ОстатокНаКонец=ТЗ.КолвоКонец;
ФактичОстаток=ОстатокНаКонец;
Сумма=ТЗ.СуммаНал;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//--------------------------------------------
Результат: открыта форма нового документа, поля заполнены, но документ не записан. Документ может быть записан и проведен только интерактивно, с соответствующей записью в журнале регистрации.
--------- Мальчик-извращенец прочел деду Морозу с табуретки всего Пастернака!
Ответ отправил: Strawberry (статус: 5-ый класс)
Ответ отправлен: 04.04.2007, 15:44 Оценка за ответ: 4 Комментарий оценки: Так появляется сообщение об ошибке (по поводу Операции)
Отвечает: Kim
Здравствуйте, Darina!
Нужно просто закомментировать строку
//Док.Записать();
и все
Ответ отправил: Kim (статус: 2-ой класс)
Ответ отправлен: 04.04.2007, 16:23 Оценка за ответ: 2
Отвечает: Ovr1970
Здравствуйте, Darina!
Подобная функциональность делается примерно так.
Во первых, новый документ создается с помощью оператора
ОткрытьФорму("Документ.ПоступлениеТовара",Парам);
Во вторых, заполняет он себя сам, т.е. в документе в процедуре "ВводНового" или "ПриОткрытии" вызывается Ваша процедура Сформировать, но с параметром "Контекст". В процедуре нужно просто убрать операторы
Док.Создать...
Док.Новый...
Док.Записать...
ОткрытьФорму...
Ответ отправил: Ovr1970 (статус: Студент)
Ответ отправлен: 05.04.2007, 10:54 Оценка за ответ: 4 Комментарий оценки: Не поняла... К меня же внешняя обработка...
Вопрос № 81.078
Здравствуйте!
Скажите пожайлуста как обработать такую строку и записать в ТаблицуЗначений (ТЗ)
"1",11111,"01.01.2007","ИВАНОВ ИВАН ИВАНОВИЧ, д.р. 22.08.1963"
Необходимо чтобы в ТЗ были отражены ТОЛЬКО:
01.01.07 ИВАНОВ ИВАН ИВАНОВИЧ 22.08.1963
Спасибо заранее всем
Отправлен: 04.04.2007, 19:09
Вопрос задал: AIvanov (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Яна
Здравствуйте, AIvanov!
1. Найти вторую запятую
2. Считать дату, в ней всегда постоянное количество символов. Преобразовать в дату при необходимости и записать в ТаблицуЗначений
3. Через 3 символа после даты начинается ФИО и заканчивается запятой. Копируем этот кусочек и записываем в ТаблицуЗначений
4. Копируем с конца строки число символов, соответствующее дате, при необходимости преобразовать к типу Дата, записать в ТаблицуЗначений.
Рекомендую посмотреть в синтакс-помощнике (или справочнике) функции для работы со строками.
Ответ отправила: Яна (статус: 10-ый класс)
Ответ отправлен: 04.04.2007, 20:24
Отвечает: Полозов Олег aka Asher
Здравствуйте, AIvanov!
Что то типа для 8.0:
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(ПерваяДата);
ТЗ.Колонки.Добавить(ФИО);
ТЗ.Колонки.Добавить(ДатаРождения);
Строка = ПолученнаяСтрока; // получаете из текстового файла например
Строка = Прав(Строка,СтрДлина(Строка)-11); //убираем левые символы
// подойдет в случае если начало постоянное т.е. количество символов не меняется.
// если нет придется поизвращаться
ПерваяДата = Лев(Строка,10); // тупо режем дату слева
Строка = Прав(Строка,СтрДлина(Строка)-13); // еще раз отрезаем
ФИО = Лев(Строка, Найти(Строка, ",")-1); // получаем ФИО
ДатаРождения = Прав(Строка,10) // дата рождения.
Ответ отправил: Palkin (статус: 4-ый класс)
Ответ отправлен: 05.04.2007, 06:47
Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, AIvanov!
Вот пример парсера. Правда, он парсит по пробелу, разделяя имя, фамилию, отчество, а Вам нужно парсить по запятой, отрезая кавычки
ИмяОтчество=СокрЛП(Сред(Спр.Наименование,Найти(Спр.Наименование," ")+1));
Анк.NAME_U=Лев(ИмяОтчество,Найти(ИмяОтчество," ")-1);
Анк.FATH_U=СокрЛП(Сред(ИмяОтчество,Найти(ИмяОтчество," ")+1));